【问题标题】:Rails System Test: how to set default_host_urlRails 系统测试:如何设置 default_host_url
【发布时间】:2020-01-16 04:07:55
【问题描述】:
  • 导轨:5.2.1
  • 开箱即用的测试设置
  • 以 chrome 作为驱动程序运行(正常和无头)

我正在尝试运行系统测试以访问外部服务,然后被重定向回我自己的应用程序。

在此系统测试中,如何访问正在运行的测试的完整 url?我找不到当前的 localhost 端口,因此无法将正确的重定向 url 发送到外部服务。

【问题讨论】:

    标签: ruby-on-rails testing


    【解决方案1】:

    在网上搜索了一些之后,我找到了答案。

    基于这个post,我添加了

    def setup
        Rails.application.routes.default_url_options[:host] = Capybara.current_session.server.host
        Rails.application.routes.default_url_options[:port] = Capybara.current_session.server.port
    end
    

    致我的application_system_test_case.rb

    这允许所有_url 方法在系统测试中工作。

    【讨论】:

    • 我会把它放在共享测试助手中,而不是放在一个测试文件中。否则,您将在每个系统测试中重复它。
    • @TomLord 我把它放在了application_system_test_case.rb,所以它是为每个系统测试设置的。
    【解决方案2】:

    Rails 6。唯一对我有用的东西:

    # inside a subclass of ActionDispatch::IntegrationTest or ActionDispatch::SystemTestCase
    setup do
      self.default_url_options = {...}
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多