我刚刚完成了https://www.railstutorial.org/book/basic_login的第8章,该网站已在线(请点击此处:https://peaceful-river-79951.herokuapp.com/)。唯一的问题是在最后的测试中:
test "login with valid information followed by logout" do
get login_path
post login_path, params: { session: { email: @user.email,
password: 'password' } }
assert is_logged_in?
assert_redirected_to @user
follow_redirect!
assert_template 'users/show'
assert_select "a[href=?]", login_path, count: 0
assert_select "a[href=?]", logout_path
assert_select "a[href=?]", user_path(@user)
delete logout_path
assert_not is_logged_in?
assert_redirected_to root_url
follow_redirect!
assert_select "a[href=?]", login_path
assert_select "a[href=?]", logout_path, count: 0
assert_select "a[href=?]", user_path(@user), count: 0
end
错误: UsersLoginTest#test_login_with_valid_information_followed_by_logout: NoMethodError:'
中未定义的方法email' for nil:NilClass
test/integration/users_login_test.rb:17:in
阻止
据我了解,@ user比使用电子邮件方法更成问题。 @user不应该是测试成功的零。我该如何解决这个问题?
一切都在Github上:https://github.com/kart-able/sample_app
答案 0 :(得分:0)
您缺少setup
任务,请参阅https://www.railstutorial.org/book/basic_login中的清单8.23,其中包含
def setup
@user = users(:michael)
end