Ruby on rails rspec错误:通过示例学习Rails:当您没有';我没料到
在浏览Mike Hartl的LearnRails by Example教程时,我收到一个奇怪的rspec错误 在第419页,清单10.30:代码如下:Ruby on rails rspec错误:通过示例学习Rails:当您没有';我没料到,ruby-on-rails,rspec,Ruby On Rails,Rspec,在浏览Mike Hartl的LearnRails by Example教程时,我收到一个奇怪的rspec错误 在第419页,清单10.30:代码如下: it "should have an element for each user" do get :index @users[0..2].each do |user| response.should have_selector("li", :content => user.name) end end 当我运行rspec时,我收到以下错误消
it "should have an element for each user" do
get :index
@users[0..2].each do |user|
response.should have_selector("li", :content => user.name)
end
end
当我运行rspec时,我收到以下错误消息:
失败:
1) UsersController GET 'index' for signed-in-users should have an element for each user
Failure/Error: @users[0..2].each do |user|
NoMethodError:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
# ./spec/controllers/users_controller_spec.rb:40
Finished in 2.58 seconds 75 examples, 1 failure
Failed examples:
rspec ./spec/controllers/users_controller_spec.rb:38 # UsersController GET 'index' for >signed-in-users should have an element for each user
我做了一些研究,在这个线程中发现了类似的问题,但我仍然无法通过测试
有什么想法吗
参考链接:
似乎没有在测试数据库中创建用户。通过插入,检查@users中是否有多个用户
puts @users.length
在“get:index”之后
如果这是nil,您可能应该再次检查before块 我刚想出来
@users[0..2].each do |user|
需要成为:
User.paginate(:page => 1).each do |user|
该应用程序仍然可以使用任一行,但要通过rspec测试,您需要使用User.paginate。此外,第一个链接提到在sessions\u helper.rb文件中添加了current\u User和@current\u User。我试过了,但似乎没有纠正任何问题。另一条评论是,该应用程序运行良好。只是这一次测试失败了。这是非常令人沮丧的!它给了我一个@users.lenght的“当你没有预料到的时候,你有一个nil对象!”