2013-03-27 21 views
8

我想在谷歌應用腳​​本上做BDD。我明白,原則上我應該能夠使用黃瓜,水豚和機械化的組合來在非軌道外部站點上執行BDD。在這種情況下,我正在測試我創建的Google App腳本。如何獲得黃瓜/水豚/機械化工作對外部non-rails網站

我已經在這個項目中得到了完整的代碼至今:

https://github.com/tansaku/GoogleAppScriptBDD

不過我目前停留在此錯誤:

rack-test requires a rack application, but none was given (ArgumentError) 

我知道,我不想使用機架,我一直在搜索論壇和堆棧溢出,到目前爲止我最好的猜測是這樣的在我的黃瓜env文件中:

require 'capybara/cucumber' 
Capybara.run_server=false 
Capybara.current_driver = :mechanize 
Capybara.app_host = 'https://script.google.com/macros/s/AKfycbytA2xBsaQ0_FSJXNkPVXQekBnWD4hXPOaCjCT00wo/dev' 

這SO職位是相關的:

How to use Cucumber to test non-Ruby, non-Rack API's

但我想利用水豚,因爲我測試的HTML界面。另一種方法在這裏描述:

http://blogs.kent.ac.uk/webdev/2012/08/02/using-capybara-webkit-with-cucumber-without-rails-or-rack/

,我一直在這裏下面的討論:

https://groups.google.com/group/cukes/browse_thread/thread/297163800eaf2968

但是我真的想了解如何只是把現成的東西,並且我希望能夠使用機械化,而不是上面提到的博客文章中描述的webkit,因爲我現在對機械化有了更好的理解。

無論如何,這裏有一個最佳實踐,或者我只是繼續試驗替代品嗎?

什麼有點鬱悶的是,水豚說明操作:https://github.com/jnicklas/capybara 說:

If you are not using Rails, set Capybara.app to your rack app:

Capybara.app = MyRackApp

但產生不同的錯誤「未初始化常量對象:: MyRackApp(NameError)」,我不知道MyRackApp應該是什麼,或者在哪裏可以找到(我一直在使用ruby的一般問題: - /),我應該通過黃瓜或水豚來源找出MyRackApp是什麼?

無論如何,以爲我會記錄所有這一切 - 任何建議非常感謝。我很想能夠BDD我的谷歌應用程序的腳本...

回答

10

If you are not using Rails, set Capybara.app to your rack app:

它本來是應該被理解成:

If the application that you are testing is a Rack app, but not Rails, set Capybara.app to your Rack app:

水豚的README wasupdated爲這個問題的結果。

由於您想要針對外部應用程序運行測試,因此應該設置Capybara.app_host而不是Capybara.app


我沒有使用過capybara-mechanize但我認爲這可能是不使用測試外部非機架應用的最佳驅動程序。機械化從Racktest繼承,Racktest是用於測試具有Rack接口(主要是Rails)的應用程序。如果你的應用沒有Rack接口,那麼水豚機械化可能不是最好的選擇。

我建議你使用內置的硒,poltergeistcapybara-webkitterminus

而且您可以編寫代碼更好一點使用Capybara.configure

Capybara.configure do |config| 
    config.run_server = false 
    config.default_driver = :selenium 
    config.app_host = 'https://www.google.com' # change url 
end 
+0

非常感謝 - 這讓我感覺很好 - 現在我在使用硒,這可能是更好的,因爲它貫穿瀏覽器,使我能夠順利地處理Google登錄 - 但我將它帶入一個新問題:-(http://stackoverflow.com/questions/15681615/how-to-use-capybara-has-text將不得不放棄TDD一段時間,我認爲... – 2013-03-28 12:19:18

7

從的Jeroen van Dijk的on this Google group message,只是將您的Capybara.app設置爲評估爲true的內容。即

Capybara.app = "make sure this isn't nil" 

只要Capybara.run_server設置爲false,它永遠不會嘗試啓動應用程序。它對我來說迄今爲止工作。

+0

拯救了我的生命:) – 2014-01-31 14:43:03