在寻求帮助之前,我已经花了太长时间搞砸了。我似乎无法让 RSpec 和 Sorcery 很好地配合使用。我已经阅读了有关使用 Sorcery 进行集成测试的文档,并且可以正确发布登录操作,但我的测试仍然认为用户没有登录。
# spec/controllers/user_controller_spec
describe 'user access' do
let (:user) { create(:user) }
before :each do
login_user(user[:email], user[:password])
end
it "should log in the user" do
controller.should be_logged_in
end
end
还有我的 login_user 方法
# spec/support/sorcery_login
module Sorcery
module TestHelpers
module Rails
def login_user email, password
page.driver.post(sessions_path, { email: email , password: password, remember_me: false })
end
end
end
end
当我在生成的页面上使用它们时,会话控制器可以正确处理页面。我尝试输出 login_user 方法的结果,它似乎可以正确发布数据。如何通过测试保留此登录用户?before :each 块是否对此不起作用?我只是不确定它可能在哪里运行错误,而且我对测试/RSpec 还很陌生,所以我可能会遗漏一些明显的东西。我会很感激任何帮助。
以下是失败测试的输出:
1) UsersController user access should log in the user
Failure/Error: controller.should be_logged_in
expected logged_in? to return true, got false