【发布时间】:2017-06-09 15:04:35
【问题描述】:
我是一名 Rails 初学者,正在阅读 Michael Hartl 的 Rails 教程,但收到一个错误,我不知道如何解决。作为参考,这是为了实现清单 9.24 (https://www.railstutorial.org/book/advanced_login) 中的更改。
我跳过了第 9 章(因为它被认为是可选的),但在第 10 章中它要求包含清单 9.24 中所做的更改,所以我这样做了,但我的测试仍然失败。
这是我在运行 rails test 时收到的错误
Error:
UsersEditTest#test_unsuccessful_edit:
NoMethodError: undefined method `session' for nil:NilClass
test/test_helper.rb:18:in `log_in_as'
test/integration/users_edit_test.rb:14:in `block in <class:UsersEditTest>'
bin/rails test test/integration/users_edit_test.rb:12
E
Error:
UsersEditTest#test_successful_edit:
NoMethodError: undefined method `session' for nil:NilClass
test/test_helper.rb:18:in `log_in_as'
test/integration/users_edit_test.rb:28:in `block in <class:UsersEditTest>'
失败的测试(在 test/integration/users_edit_test.rb 中)是:
test "successful edit" do
log_in_as(@user)
get edit_user_path(@user)
... end
test "unsuccessful edit" do
log_in_as(@user)
get edit_user_path(@user)
... end
这里是被调用的 integration/test_helper 方法
# Log in as a particular user.
def log_in_as(user)
session[:user_id] = user.id
end
特别令人困惑的是,测试助手中有另一种方法也使用会话,并且在 user_login_test 中调用它可以正常工作。
任何帮助将不胜感激!
【问题讨论】:
标签: ruby-on-rails ruby testing integration-testing railstutorial.org