0

我有2個_spec文件:第一個包含單元測試,另一個包含一些集成測試。Rspec測試失敗如果一起運行

通過指定文件名來運行它們時,它們是綠色的,當它們作爲「rspec」運行時,其中3個失敗。

我正在使用database_cleaner gem來清理每個測試周圍的測試數據庫。

config.use_transactional_fixtures = false 

    config.before(:suite) do 
    DatabaseCleaner.strategy = :transaction 
    DatabaseCleaner.clean_with(:truncation) 
    end 

    config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 

我使用「let」來實例化對象和FactoryGirl來創建示例對象。

有沒有人遇到過這樣的事情?

+0

這聽起來像數據庫沒有在測試之間正確重置 - 您可能可以驗證這是什麼情況下確切的失敗(即如果您正在檢查集合大小和有多餘的元素) 。 它也可能是測試之間的合法衝突 - 它取決於故障是什麼,以及故障是否依賴於順序。 – oowowaee

+0

@oowowaee我已經修復了從def移動到實例化對象。現在按預期工作,DatabaseCleaner也是如此 – matteoredz

回答

1

的一些問題可能是:你正在修改和測試之間不進行重置

  • 類變量。類變量是反模式,通常應該避免。
  • 你不能像常量那樣正確地存根。

任何在測試之間保持狀態都會導致您看到的問題。使用您的調試器在每次測試中檢查對象的狀態。

+0

這並沒有提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/17574307) – rafalmp

0

我已經解決了我的問題,從def移動到let。注意定義