我在子目录中运行了一个Passenger Rails 4应用程序:rails4.test/tools/
(rails4.test /提供不相关的内容)。
手动测试时工作正常,但我无法让Capybara和Selenium放好。
在spec_helper.rb
中,如果我将应用主机设置为:
config.app_host = 'http://rails4.test/tools'
我的Selenium测试运行正常(即带有“js:true”的测试)但是我收到了不依赖Selenium的路由错误。例如,如果我有测试代码说:
visit login_path
我会收到以下错误:
没有路线匹配[GET]“/ tools / login”
但是,如果我将应用主机设置为:
config.app_host = 'http://rails4.test'
我遇到了相反的问题 - 非硒测试工作正常,但Selenium测试访问了错误的网址(http://rails4.test/controller/action而不是http://rails4.test/tools/controller/action),从而产生404错误。我假设非硒测试工作正常,因为乘客配置正确地路由请求?
我有一个简单的方法可以解决这个问题吗?我还尝试将以下行添加到test.rb
文件中:
config.action_controller.relative_url_root = '/new_tools'
但无论如何设置config.app_host,它都没有改变任何内容。
有没有办法单独设置Selenium主机?我做了些蠢事吗?
任何建议将不胜感激!感谢。
答案 0 :(得分:0)
通过检测在每次测试之前是否设置了:js => true
选项并相应地调整app_host
来解决问题:
spec_helper.rb
区块中的RSpec.configure do |config|
:
# adjust app_host depending of if if js == true
config.before(:each) do
if(example.options[:js])
Capybara.app_host = 'http://rails4.test/tools'
else
Capybara.app_host = 'http://rails4.test'
end
end