我在第10.3.1节“Ruby on Rails 3教程”的“用户索引”。我有一个拒绝通过的测试,我已经广泛地研究了这个错误,并且似乎无法让它通过。UsersController登录用户GET'索引'应该为每个用户都有一个元素
以下是错误: 1)UsersController GET为登录用户应具有为每个用户 故障/错误的元素“索引”:response.should have_selector(“里”,:含量=> user.name ) NoMethodError: 未定义的方法name' for nil:NilClass # ./spec/controllers/users_controller_spec.rb:39:in
块( '在 #./spec/controllers/users_controller_spec.rb:38:in each' # ./spec/controllers/users_controller_spec.rb:38:in
块(4级)'
5级)在我已经尝试了测试,以确保用户正在返回一个对象而不是一个数组......这是。我检查了我的sign_in和test_sign_in方法。我可以继续前进,但是失败的测试让我疯狂。
这里是我的users_controller_spec.rb代码: 描述“为已登录的用户”做
before(:each) do
@user = test_sign_in(Factory(:user))
second = Factory(:user, :name => "Bob", :email => "[email protected]")
third = Factory(:user, :name => "Ben", :email => "[email protected]")
@users = [@users, second, third]
end
it "should be successful" do
get :index
response.should be_success
end
it "should have the right title" do
get :index
response.should have_selector("title", :content => "All users")
end
it "should have an element for each user" do
get :index
@users.each do |user|
response.should have_selector("li", :content => user.name)
end
end
end
end
请帮助!
我其实刚刚解决了这个问题。在我的@用户代码\t = [@user,second,third]中,@ user with @ users拼错了@user。 – 2012-02-22 21:47:19
你应该写它作为答案,并接受它。这样,问题将被标记为“已回答”,就像它应该那样。 – 2012-02-23 15:28:50