【问题标题】:Setting up Capybara to have an alias for the server it boots up设置 Capybara 为其启动的服务器设置别名
【发布时间】:2018-03-12 16:21:25
【问题描述】:
所以我想测试一些功能。
对于部分功能,我希望将请求发送到不同的主机。
当我在本地(Capybara 之外)测试我的代码时,我可以使用 localhost:3000 处理部分请求,使用 0.0.0.0:3000 处理另一部分请求。
对于在 Capybara 中复制这种方法的最佳方法有什么想法吗?
如果我将默认主机设置为localhost:3000 并自己启动服务器,它就可以工作。但还不能让它工作。
FWIW 我正在使用 poltergeist 作为 js 驱动程序。
【问题讨论】:
标签:
ruby-on-rails
rspec
capybara
rspec-rails
【解决方案1】:
控制应用程序启动的两个 Capybara 设置是Capybara.server_host(默认为 127.0.0.1)和Capybara.server_port(默认为随机空闲端口)。获得所需内容的一种方法是修复端口,然后为所有主机名选择一个将所有内容解析为 127.0.0.1 的域(可能在您的机器上为.test - 或向解析为的hosts 文件添加一个新名称127.0.0.1)
Capybara.server_port = 9999
visit('/') # will go to http://127.0.0.1:9999/
visit('http://127.0.0.1:9999')
visit('http://my_app.test:9999')
另一个选项是设置Capybara.always_include_port = true,这将覆盖任何访问调用的端口,该端口没有明确包含Capybara运行其服务器的端口(因此可以保持Capybara选择的随机端口)
Capybara.always_include_port = true
visit('/') # http://127.0.0.1:<server_port>/
visit('http://my_app.test') # http://my_app.test:<server_port>
visit('http://google.com') # http://google.com:<server_port>
visit('http://google.com:80/') # http://google.com