我在hooks.rb中有一個After鉤子,用於刪除在上一個場景中創建的用戶。 我開始注意到,當在一天的特定時間上運行時,此鉤子在場景中執行。 有一種方法會執行到某一行,然後在該方法中的assert命令之前執行鉤子,因爲該方法失敗。 測試從批處理文件(「ruby file_name.rb」)運行。Cucumber在場景結束前執行了鉤子之後
有沒有人有一個想法,爲什麼這可能發生或如何解決它?
謝謝!
我在hooks.rb中有一個After鉤子,用於刪除在上一個場景中創建的用戶。 我開始注意到,當在一天的特定時間上運行時,此鉤子在場景中執行。 有一種方法會執行到某一行,然後在該方法中的assert命令之前執行鉤子,因爲該方法失敗。 測試從批處理文件(「ruby file_name.rb」)運行。Cucumber在場景結束前執行了鉤子之後
有沒有人有一個想法,爲什麼這可能發生或如何解決它?
謝謝!
不要從命令行運行測試嗎?
$ cucumber
我會建議使用調試器寶石。你可以添加調試器語句之前你認爲是失敗,然後使用一些調試命令
也許相關: 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會檢查它正在運行的環境,以保持其短。以這種方式運行的大種子文件將顯着增加測試運行時間,所以要小心。