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