ruby-on-rails Rails系统测试:如何设置default_host_url

yhxst69z  于 2023-11-20  发布在  Ruby
关注(0)|答案(3)|浏览(154)
  • Rails:5.2.1
  • 开箱即用测试设置
  • 以Chrome作为驱动程序运行(正常和无头)

我试图运行一个系统测试,我访问一个外部服务,然后被重定向回我自己的应用程序。
在此系统测试中,我如何访问正在运行的测试的完整URL?我找不到当前的本地主机端口,因此无法将正确的重定向URL发送到外部服务。

daolsyd0

daolsyd01#

在互联网上搜索了一段时间后,我找到了答案。
基于此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方法在系统测试中工作。

kxe2p93d

kxe2p93d2#

Rails 6.唯一对我有用的是:

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

字符串

hjqgdpho

hjqgdpho3#

Rails 6.1.6更新:
默认主机似乎是127.0.0.1。为了让它匹配我的开发环境中的服务器主机和端口,在application_system_test_case.rb中我使用了以下命令:

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
  def setup 
    Capybara.server_host = "localhost" # or whatever you use in dev
    Capybara.server_port = 3000 # ditto
  end

  ...

字符串

相关问题