ishi soichi
2012-Nov-12 03:19 UTC
[rspec-users] controller test :scaffold index undefined method "create"
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>
enrico stano
2012-Nov-12 10:24 UTC
[rspec-users] controller test :scaffold index undefined method "create"
hi. the #create is related to Factory Girl. Try to explicitly call FactoryGirl.create(:plan) bye, enricostn On Monday, November 12, 2012, ishi soichi wrote:> > 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? > >-- ? Enrico Stano ? ? twitter @enricostano ? skype ocirneonats -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20121112/b825616d/attachment.html>