在Travis CI上以不同的URL运行Capybara测试

时间:2013-05-07 07:37:56

标签: ruby-on-rails-3 capybara integration-testing phantomjs travis-ci

我有一些用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

我正在使用PhantomJSpoltegeist gem。我在想,如果我能以某种方式使用Travis env var。有人对此有任何建议吗? 谢谢!

2 个答案:

答案 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