我有一些用Capybara编写的集成测试,我正在Travis上运行。在测试中,我用visit
方法命中了一个硬编码的URL(由Pow和符号链接给出)。这当然对特拉维斯不起作用。我需要做的是以某种方式区分环境。因此,当测试在Travis上运行时,他们会遇到一个不同的url,例如localhost:5000。我把它放在我的.Travis.yml
文件中,它将在后台启动rails server
,工作正常。问题是如何让测试使用该网址?
我的配置看起来像这样:
language: ruby
rvm:
- 1.9.3
before_script:
- RAILS_ENV=test bundle exec rake db:create
- "bundle exec rails server -p 5000 &"
- "sleep 5" # Wait for the server to start up"
script: bundle exec rspec
我正在使用PhantomJS
到poltegeist
gem。我在想,如果我能以某种方式使用Travis env var。有人对此有任何建议吗?
谢谢!
答案 0 :(得分:1)
我对Travis CI不是很熟悉,但我认为您不需要将服务器名称硬编码到url中。
而不是
visit 'http://localhost:5000/about'
您可以使用
visit '/about'
或更好
visit about_path
减少依赖总是更好。我建议你调整测试。
答案 1 :(得分:1)
Travis CI为您设置several environment variables即可使用。我认为TRAVIS=true
可能会引起人们的兴趣:
Capybara.app_host = if ENV['TRAVIS']
'localhost:5000'
else
'http://www.example.com'
end