使用Capybara测试令牌认证的正确方法是什么?这就是我所拥有的:
describe ApplicationController do
let!(:user) { create :user, authentication_token: 1 }
specify "token should work now" do
visit "/?auth_token=#{user.authentication_token}"
# get :index
response.should_not redirect_to(new_user_session_url)
end
specify "token shouldn't work in the future" do
Timecop.travel(2.weeks)
visit "/?auth_token=#{user.authentication_token}"
# get :index
response.should redirect_to(new_user_session_url)
Timecop.return
end
end
如果我没有get :index
行,则测试失败。但是如果我注释掉那一行,那么测试就会被保存,但这不应该是正确的方法,因为我的visit
就高于它。
我做错了什么?
答案 0 :(得分:3)
事实证明visit
没有将变量传递给控制器。将其更改为get :index, auth_token: user.authentication_token
可解决此问题。