[rspec-users] controller test :scaffold index undefined method "create"

ishi soichi soichi777 at gmail.com
Mon Nov 12 03:19:53 UTC 2012


my environment:

Rails 3.1.3
rspec-rails (2.11.4)
rspec 2.11.1


I have generated a scaffold named Plan. And I have not done RSpec tests
for controllers at all.


schema.rb

  create_table "plans", :force => true do |t|
    t.integer  "give_take"
    t.integer  "weight"
    t.boolean  "check_in"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "flight_name_id"
  end

plans_controller.rb

  def index
    @plans = Plan.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @plans }
    end
  end

spec/factories/plans.rb

FactoryGirl.define do
  factory :plan do
    give_take 1
    weight 1
    check_in false
    flight_name_id 11
  end
end


plans_controller_spec.rb

  describe "GET index" do
    it "populates an array of plans" do
      plan = create(:plan)               #######HERE!!!!!
      get :index
      assigns(:plans).should eq [plan]
    end

    it "renders the :index view" do
      get :index
      response.should render_template :index
    end
  end


It raises a failure for index

  2) PlansController GET index populates an array of plans
     Failure/Error: plan = create(:plan)
     NoMethodError:
       undefined method `create' for
#<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x000001037a8e70>
     # ./spec/controllers/plans_controller_spec.rb:45:in `block (3
levels) in <top (required)>'


Certainly I haven't defined method "create" anywhere except the one
generated by scaffold, which is not shown here.

How can I CREATE an instance here?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20121112/f57b4f6b/attachment.html>


More information about the rspec-users mailing list