我正在开发一个基于sinatra的Web应用程序,我广泛使用测试来确保在部署之前一切正常。作为测试框架,我使用minitest :: specs和capybara with webkit。
我的问题是,在部署之后,我的应用程序使用这样的基本URL运行:
http://cool.server.net/to-the-application/
但是在测试期间,水豚会假设一个干净的基本网址,其路径为/
而不是to-the-application/
。这意味着我无法测试以找到与忘记在链接和操作中设置base-url相关的错误。
对于干测试我跟着Changing the base URL for Rails 3 development并修改了我的config.ru
,但我还没有找到任何方法让水豚使用不同的基础。
任何想法如何解决这个问题?
答案 0 :(得分:1)
如果使用rack_test驱动程序,则完全忽略主机名,因此更改主机名并不会执行任何操作。如果使用其他驱动程序,则可以指定
Capybara.app_host = "http://cool.server.net"
请注意,cool.server.net通常需要解析为127.0.0.1,因为Capybara会绑定正在测试的应用程序。
更新:考虑到这一点后,我不确定这是你想要的。如果您希望Capybara在/to-the-application
下安装您的应用,那么您将需要创建自己的应用对象,并将其分配给Capybara.app
- 请参阅https://github.com/teamcapybara/capybara/blob/2.13_stable/lib/capybara/rails.rb#L4了解如何Capybara目前正在安装该应用程序。