rails 应用程序将 Devise 集成到其 Minitest 助手中
module ActiveSupport
class TestCase
include Devise::Test::IntegrationHelpers
然而,rails 默认连接是
www.example.com
,而应用程序需要通过比较不同主机连接的结果进行测试。主机是通过 Site
类建立的。 sites.yml
例如包含
one:
shop: one
host: 'www.one.com'
name: first
two:
shop: two
host: 'www.two.com'
name: second
example:
shop: id_one
host: "www.example.com"
name: localhost
devise Wiki 没有解决这个问题。
下面如何测试
test "has proper credentials as shop manager" do
sign_in users(:chain_manager_shop_one)
get chain_manager_minitests_url(id: shops(:one).id)
assert_response :success
end
写入以便
sign_in
和get
操作都在特定主机下进行?
对于 Rails 7,当然可以通过以下语法实现:
get chain_manager_minitests_url(id: shops(:one).id), headers: { "host": 'www.one.com' }
Rails 早期版本中哪些内容可能是正确的(不确定哪个)
setup do
request.host = "www.one.com"
end
在 Rails 7 中绝对不执行任何操作