0

我在 Travis 上运行了一些用 Capybara 编写的集成测试。在测试中,我使用该方法点击了一个硬编码的 url(由 Pow 和符号链接提供)visit。这当然不适用于 Travis。我需要做的是以某种方式区分环境。因此,当测试在 Travis 上运行时,它们会访问不同的 url,例如 localhost:5000。我把它放在我的.Travis.yml文件中,它将rails server在后台启动,效果很好。问题是我如何让测试使用那个 url 来代替?

我的配置看起来像这样:

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通过poltegeistgem 使用。我在想我是否可以以某种方式使用 Travis env var。有人对此有任何建议吗?谢谢!

4

2 回答 2

1

Travis CI为您设置了几个可以使用的环境变量。我认为TRAVIS=true可能会感兴趣:

Capybara.app_host = if ENV['TRAVIS']
                      'localhost:5000'
                    else
                      'http://www.example.com'
                    end
于 2013-05-08T08:27:16.800 回答
1

我对 Travis CI 不是很熟悉,但我看不出有任何理由需要将服务器名称硬编码到 url 中。

代替

visit 'http://localhost:5000/about'

您可以使用

visit '/about'

或更好

visit about_path

更少的依赖总是更好。我建议你调整测试。

于 2013-05-07T08:53:31.710 回答