title: Rspec: Stub method that is in the controller
body: <p>May I know how to stub method that is in the controller create method? I need to write the spec for this but I got these errors. I need to check the create method in controller must execute validate_fbid method before create a new company record in model.</p>
  
  <p>Error: </p>
  
  <pre><code>1) Companies new company create with valid information#validate_fbid should have correct parameters and return value
   Failure/Error: CompaniesController.create.should_receive(:validates_fbid).with(company)
   NoMethodError:
     undefined method `create' for CompaniesController:Class
   # ./spec/requests/companies_spec.rb:38:in `block (5 levels) in &lt;top (required)&gt;'
  
    2) Companies new company create with valid information#validate_fbid should fbid validation passed
   Failure/Error: CompaniesController.create.stub(:validates_fbid).and_return('companyid')
   NoMethodError:
     undefined method `create' for CompaniesController:Class
   # ./spec/requests/companies_spec.rb:43:in `block (5 levels) in &lt;top (required)&gt;'
  </code></pre>
  
  <p>CompaniesController</p>
  
  <pre><code>def create 
  company = Company.new(params[:company])
  verifyfbid = validate_fbid(company)
  
  if verifyfbid != false
      if company.fbid.downcase == verifyfbid.downcase
          if company.save 
              @message = "New company created."
              redirect_to root_path
          else 
              @message = "Company create attempt failed. Please try again."
              render 'new' 
          end 
      else 
          @message = "Company create attempt failed. Invalid facebook id."
          render 'new' 
      end
  else  
      @message = "Company create attempt failed. No such facebook id."
      render 'new'            
      end             
   end 
  
    private  
    def validate_fbid(company)
     uri = URI("http://graph.facebook.com/" + company.fbid)
     data = Net::HTTP.get(uri)
     username = JSON.parse(data)['username']      
     if username.nil?
      return false 
     else
      "#{username}"
     end
   end
  </code></pre>
  
  <p>Requests/companies_spec.rb</p>
  
  <pre><code>context "#validate_fbid" do               
          #validate fbid
          let(:company){ Company.new(name:'Example Company', url: 'www.company.com', fbid: 'companyid', desc: 'Company desc' )}
  
          it "should have correct parameters and return value" do
              CompaniesController.create.should_receive(:validates_fbid).with(company)
                                  .and_return('companyid')
          end
  
          it "should fbid validation passed" do               
              CompaniesController.create.stub(:validates_fbid).and_return('companyid')
              company.fbid.should_not be_nil
              company.fbid.should == 'companyid'
              company.save
              expect { click_button submit }.to change(Company, :count).by(1)
          end                                             
      end    
  </code></pre>