设置Capybara为其启动的服务器设置别名

时间:2018-03-12 16:21:25

标签: ruby-on-rails rspec capybara rspec-rails

所以我有一些我想测试的功能。

对于我希望将请求发送给其他主机的部分功能。

当我在本地(在Capybara之外)测试我的代码时,我可以使用localhost:3000作为部分请求,0.0.0.0:3000作为另一部分请求。

有关使用Capybara复制此方法的最佳方法的任何想法吗?

如果我将默认主机设置为localhost:3000并自行启动服务器,则可以正常运行。但是还没有能够让它工作。

FWIW我正在使用poltergeist作为js驱动程序。

1 个答案:

答案 0 :(得分:1)

控制启动测试服务器下的应用程序的两个Capybara设置是FactoryBot.define do factory :comment do commenter { Faker::Lorem.sentence } description { Faker::Lorem.paragraph } post_id nil end end (默认为127.0.0.1)和Capybara.server_host(默认为随机空闲端口)。获得所需内容的一种方法是修复端口,然后选择一个域,将所有主机名都解析为127.0.0.1(可能是您计算机上的Capybara.server_port - 或者为.test添加新名称解析为127.0.0.1的文件)

hosts

另一个选项是设置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运行其服务器的端口(因此可以保留随机端口) Capybara选择)

Capybara.always_include_port = true