gpt4 book ai didi

ruby-on-rails - Rspec 使用测试,Capybara 使用开发数据库

转载 作者:行者123 更新时间:2023-12-02 01:22:52 26 4
gpt4 key购买 nike

我有一个有趣的问题。我使用 Rspec 进行测试驱动开发,使用 Capybara 和 Poltergeist 进行验收测试。哦,还有 FactoryGirl。 Rspec 和 FactoryGirl 正在对测试数据库进行操作,这正是我想要的。问题是验收测试是针对开发数据库运行的。

这会导致像下面这样的简单测试失败:

  my_class = FactoryGirl.create(:my_class)
visit my_classes_path
expect(page).to have_content(my_class.title)

我什至使用以下方式检查了屏幕截图:

page.save_screenshot("screenshot#{__FILE__}_#{__LINE__}.png")

解决方案所以很明显,当我启动“rails server”时,Capybara 试图使用在我的本地环境中初始化的相同 URL 和端口。在我的 Capybara 配置中指定不同的端口可以达到如下效果:

Capybara.configure do |c|
c.run_server = true
c.javascript_driver = :poltergeist
c.default_driver = :poltergeist
c.server_port = 7000
c.app_host = "http://localhost:#{c.server_port}"
end

最佳答案

对于正常使用,您不必锁定到特定端口或设置 app_host。如果未设置 app_host,则 Capybara 默认为 http://#{Capybara.server_host}:#{Capybara.server_port},默认为 http://127.0.0.1:<the port capybara 在 > 上运行服务器。如果您需要使用 localhost 而不是 127.0.0.1(因为 IPv6 或其他原因),那么只需设置

Capybara.server_host = 'localhost'

而不是应用程序主机和修复端口。 app_host 真正适用于当您尝试测试外部站点,或者您需要访问子域来测试您的应用程序时 - 修复端口实际上是为了解决防火墙等问题。

关于ruby-on-rails - Rspec 使用测试,Capybara 使用开发数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38885868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com