我能够获得伪造的经过身份验证的功能规范(通过rspec
)使用我的应用程序,使用涵盖下一个请求发生的login_as
。但是,对于包含 Rails 控制器操作重定向的操作,似乎无法为该请求(重定向)设置用户代理。有没有办法告诉应用程序对功能规范中的所有请求使用login_as
?
因此,这个旧的 GitHub 线程评论似乎有一个解决方案,在我的初始测试中仍然有效。
module Warden
module Test
module Helpers
def login_permanently_as(user, opts = {})
Warden::Manager.on_request do |proxy|
opts[:event] || :authentication
proxy.set_user(user, opts)
end
end
end
end
end
猴子补丁Warden::Test::Helpers
添加一个利用on_request
的方法。现在在我的 Capybara 功能规范中,我不再需要为每次点击新页面不断设置login_as
,并且它是为那些在执行过程中重定向的操作设置的。