0

我有一些在特拉维斯上运行的水豚写的集成测试。在测试中,我使用visit方法打开硬编码的URL(由Pow和符号链接提供)。这在Travis当然不适用。我需要做的是以某种方式区分环境。因此,当测试在Travis上运行时,它们会打到不同的url,例如localhost:5000。我把它放在我的.Travis.yml文件中,它会在后台运行正常的情况下启动rails server。问题是如何让测试使用该网址?在特拉维斯CI上运行水豚测试不同的网址

我的配置看起来是这样的:

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宝石。我在想,如果我能以某种方式使用Travis env var。任何人对此有任何建议? 谢谢!

回答

1

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

而不是

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

您可以使用

visit '/about' 

或者更好

visit about_path 

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

+0

谢谢比利。当然硬编码路径只是概念证明。不坚持:)。 – Tim 2013-05-07 11:34:11

+0

@Tim,如果你能发布你如何解决这个问题,然后接受你自己的答案(这个问题被标记为堆栈溢出回答),这将是非常棒的。 – henrikhodne 2013-07-17 20:56:19

1

特拉维斯CI为您设置several environment variables您可以使用。我认为TRAVIS=true可能是有趣的:

Capybara.app_host = if ENV['TRAVIS'] 
         'localhost:5000' 
        else 
         'http://www.example.com' 
        end 
+0

Thx。我尝试过,但我们发现问题实际上是由于其他原因。 – Tim 2013-05-13 13:30:44