2013-12-17 60 views
0

我在hooks.rb中有一個After鉤子,用於刪除在上一個場景中創建的用戶。 我開始注意到,當在一天的特定時間上運行時,此鉤子在場景中執行。 有一種方法會執行到某一行,然後在該方法中的assert命令之前執行鉤子,因爲該方法失敗。 測試從批處理文件(「ruby file_name.rb」)運行。Cucumber在場景結束前執行了鉤子之後

有沒有人有一個想法,爲什麼這可能發生或如何解決它?

謝謝!

回答

0

不要從命令行運行測試嗎?

$ cucumber 

我會建議使用調試器寶石。你可以添加調試器語句之前你認爲是失敗,然後使用一些調試命令

https://github.com/cldwalker/debugger

0

也許相關: https://github.com/cucumber/cucumber/issues/52

52期大多固定在主,但我認爲有剩下的幾個測試需要在發佈之前修復。

無論如何,您可以改爲使用database_cleaner gem來達到此目的。我們在每個場景之前都使用一個乾淨的數據庫進行測試,以確保我們有獨立的測試,因爲其他測試的結果,不會出現誤報/否定結果。我們使用以下命令:

begin 
    # start off entire run with with a full truncation 
    DatabaseCleaner.clean_with :truncation 
    # continue with the :transaction strategy to be faster while running tests. 
    DatabaseCleaner.strategy = :transaction 
rescue NameError 
    raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it." 
end 

而且我們每次運行前加載我們的試驗種子: 之前做|場景| load Rails.root.join('db/seeds.rb') end

請注意,我們的seeds.rb會檢查它正在運行的環境,以保持其短。以這種方式運行的大種子文件將顯着增加測試運行時間,所以要小心。

相關問題