一个应用程序使用rails 7.0.4和devices 4.8。它在各种控制器操作中按预期进行身份验证。
但是,在测试(Minitest)中,无法达到用户正在登录的Assert。
require "test_helper"
class ThisKlassControllerTest < ActionDispatch::IntegrationTest
include Warden::Test::Helpers
include Devise::Test::IntegrationHelpers
test "should login " do
sign_in(users(:one))
assert warden.authenticated?(:user)
end
返回NameError: undefined local variable or method 'warden' for [...]ControllerTest[...] Did you mean? warn
,表示系统不知道warden,并且包含指令实际上没有实际意义。
假定应用程序正在执行身份验证,则此测试设置中明显缺少/错误的是什么?
1条答案
按热度按时间jyztefdp1#
Warden的工作方式是潜伏在Rack中间件堆栈的底部,并将自己注入到
env
中,这只是每个Rack中间件沿着到下一层的散列。如果您确实想这样做,您可以通过以下请求访问Warden:
但是作为一个健全性测试,它是非常难闻的。你在这里太深入内部了。如果你想测试用户认证系统是否工作,那么就做一个更高级别的测试,比如他们可以编辑他们的个人资料。
Warden测试助手确实应该少用一些,通过跳过实际登录用户的步骤来使测试套件运行得更快。