2011-04-02 72 views
3

我正在使用Cucumber/Capybara組合測試Rails 3應用程序。我也嘗試使用Selenium來測試一些特定於JavaScript的場景,但遇到了難以理解的奇怪困難。爲什麼使用Selenium運行時,我的黃瓜測試失敗?

我對黃瓜/水豚的經驗很低,我對硒的經驗是零。

這裏的情景:

Scenario: Browsing events 
    Given many events exist 
    And I am on the events page 
    Then I should see a list of 15 events 
    When I follow the first event 
    Then I should be on the event page 
    And I should see a google map 
    And I should see the event details 

在那種情況下RackTest下運行,它通過了所有方式向谷歌地圖的步驟,此時它失敗,因爲沒有JavaScript的。這是預料之中的。

當我用默認的JavaScript驅動程序(Selenium)運行測試時,它在第三步失敗(我應該看到一個15個事件的列表)。當我觀察瀏覽器窗口時,確實事件列表根本不包含任何事件 - 就好像它們不存在於數據庫中一樣。

順便提一下,第一步(很多事件存在)使用FactoryGirl創建事件負載。

由於這對我來說都很新,我不知道我是否被一個典型的疑難雜症抓住了?除了從rails g cucumber:install進行的標準安裝以外,我沒有進行任何配置更改。另外,如果相關,我使用OSX。

感謝

回答

7

我相信你正在嘗試使用事務燈具(默認行爲)與硒,但是這是行不通的。當瀏覽器單獨調用Rails應用程序時,在測試中管理的事務超出了範圍,因此它看不到您的測試創建的任何未提交的數據。

而不是交易裝置,你需要使用其中一個數據庫清理寶石。

https://github.com/bmabey/database_cleaner

編輯:

我後來才知道,這是可能使用事務燈具用Selenium測試,性能更好,如果你做的(信貸基拉科里納的答案)。詳情請參閱http://pastie.org/1745020

+0

謝謝。設置'DatabaseCleaner.strategy =:truncation'確實已經成功了。 – aaronrussell 2011-04-03 17:04:23

+0

感謝@Steve http://pastie.org/1745020鏈接,這對我來說是完美的! – 2013-02-08 15:35:22