如何更改默认的“www.example.com”域以在 Rails 中进行测试?

2023-12-04

我有一个 Rails 应用程序,它的行为取决于访问的域(例如 www.myapp.com 将以不同的方式调用 user.myapp.com)。在生产使用中,这一切都工作正常,但我的测试代码总是看到主机名“www.example.com”。

有没有一种干净的方法让测试指定它假装访问的主机名?


  • 集成/请求规格(继承自ActionDispatch::IntegrationTest):

     host! 'my.awesome.host'
    

See the docs,第 5.1 节可用于集成测试的助手.

或者,在 spec_helper.rb 级别全局配置请求规范:

RSpec.configure do |config|
  config.before(:each, type: :request) do
    host! 'my.awesome.host'
  end
end
  • 控制器规格(继承自ActionController::TestCase)

     @request.host = 'my.awesome.host'
    

See the docs,第 4.4 节可用的实例变量.

  • 功能规格(通过水豚)

     Capybara.default_host = 'http://my.awesome.host'
     # Or to configure domain for route helpers:
     default_url_options[:host] = 'my.awesome.host'
    

From @AminAriana 的回答

  • 查看规格(继承自ActionView::TestCase)

     @request.host = 'my.awesome.host'
    

...或通过 RSpec:

    controller.request.host = 'my.awesome.host'

See the rspec-rails 查看规范文档.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改默认的“www.example.com”域以在 Rails 中进行测试? 的相关文章

随机推荐