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>