從 RSpec 2 升級

RSpec 3 包含許多重大變更,但我們希望這會是您做過最順暢的主要版本 gem 升級。為了協助這個過程,我們與 RSpec 3 同時開發了 RSpec 2.99。3.0 中的每個重大變更在 2.99 中都有對應的棄用。RSpec 2.99 並非僅僅提供一個描述所有重大變更(其中大多數只影響極少數使用者!)的通用升級文件,而是為您的專案提供量身打造的詳細升級檢查清單。

此外,Yuji Nakayama 建立了一個非常棒的工具 Transpec,它可以自動升級大多數的 RSpec 套件。我們在幾個專案中試用過它,並對它的運作效果感到驚艷

如果您使用 rspec-rails,您可能需要閱讀針對該 gem 的 升級注意事項

逐步說明

  1. 從 RSpec 2.x 上綠色的測試套件開始
  2. 安裝 RSpec 2.99。
  3. 檢查您的測試套件,並確保它仍然是綠色的。(應該是這樣,但我們可能犯了錯 -- 如果它破壞了任何東西,請回報錯誤!)。現在是提交的好時機。
  4. 您會注意到在 spec 執行結束時印出了一堆棄用警告。這些可能會被截斷,因為我們不希望重複發送相同的棄用警告來騷擾您。要取得完整的棄用清單,您可以通過傳遞 --deprecation-out path/to/file 命令列選項將它們管道輸出到一個檔案。
  5. 如果您想了解所有被棄用的內容,最好仔細閱讀棄用訊息。在某些情況下,您有選擇 -- 例如透過提取的 rspec-collection_matchers gem 繼續使用 have 集合基數匹配器,或者將期望表達式重寫為類似 expect(list.size).to eq(3) 的形式。
  6. 安裝 transpec,因為它可以為您節省大量時間。(請注意,這不需要進入您的 Gemfile:您可以在 bundle 的上下文之外以獨立可執行檔的形式執行 transpec)。
  7. 在您的專案上執行 transpec。查看 transpec --helpREADME 以取得完整的選項清單。
  8. 執行測試套件(它應該仍然是綠色的,但檢查一下總是好的!),並提交。
  9. 如果還有任何剩餘的棄用警告(transpec 並不完全處理您可能收到的所有警告),請處理它們。
  10. 一旦您有一個針對 RSpec 2.99 執行的無棄用測試套件,您就可以升級到 RSpec 3 了。安裝 RSpec 3。
  11. 執行您的測試套件。它應該仍然是綠色的。如果任何東西失敗,請開啟一個 GitHub issue -- 我們認為這是一個錯誤!請注意,您可能仍然會在 RSpec 3 上收到一些在 2.99 中不存在的其他棄用警告。這是正常的 -- 有一些東西我們無法在 2.99 中輕鬆棄用並在 3.0 中移除,因此它們會在 3.0 中觸發棄用,並計劃在 RSpec 4 中移除它們。
  12. 我們建議再次執行 transpec。有些變更只有在您的專案使用 RSpec 3 時,transpec 才能進行。
  13. 提交並享受使用最新的 RSpec 版本!