ruby - 更改 Capybara 验收测试的基本 URL

标签 ruby sinatra capybara rack minitest

我正在开发一个基于 sinatra 的 Web 应用程序,并且在部署之前广泛使用测试来确保一切正常。作为测试框架,我使用 minitest::specs 和 capybara 以及 webkit。

我的问题是,部署后我的应用程序使用如下基本网址运行:

http://cool.server.net/to-the-application/

但在测试期间, capybara 假设一个干净的基本 URL,其路径为 /,而不是 to-the-application/。这意味着我无法测试查找与忘记在链接和操作中设置基本 URL 相关的错误。

对于干测试,我遵循 Changing the base URL for Rails 3 development并修改了我的 config.ru,但我还没有找到任何方法让 capybara 使用不同的底座。

有什么想法可以解决这个问题吗?

最佳答案

如果使用rack_test驱动程序,主机名将被完全忽略,因此更改它不会执行任何操作。如果使用不同的驱动程序,您可以指定

Capybara.app_host = "http://cool.server.net" 

请注意,cool.server.net 通常需要解析为 127.0.0.1,因为这是 Capybara 绑定(bind)正在测试的应用程序的位置。

更新:考虑到这一点后,我不确定这是否是您想要的。如果您想要 capybara 将您的应用程序安装在 /to-the-application 下那么您将必须创建自己的应用程序对象并将其分配给 Capybara.app - 参见https://github.com/teamcapybara/capybara/blob/2.13_stable/lib/capybara/rails.rb#L4了解 Capybara 目前如何安装应用程序。

关于ruby - 更改 Capybara 验收测试的基本 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43399037/

相关文章:

ruby lambda 捕获 : a weird effect and workaround

java - 如何为类似的 Ruby 功能编写最好的 Java 代码?

ruby - 在 Ruby 中逐像素读取图像

ruby - 运行 ruby​​ 应用程序时 Sinatra 不加载

ruby-on-rails - 如何使用 rspec、capybara 和 poltergeist 编写不会超时或随机失败的 javascript 测试?

ruby - Ruby 中的隐式返回在返回两个值时返回错误

html - 如何设置使用邮件 gem 发送 HTML 电子邮件?

ruby-on-rails - 在 rails 应用程序中安装 Sinatra 应用程序并共享布局

ruby-on-rails-3 - 带有jquery.selectize的Capybara集成测试

ruby-on-rails-3 - Rails 3.0.9 + Devise + Cucumber + Capybara 臭名昭著的 "No route matches/users/sign_out"