RSpec 2.99 和 3.0 beta 版已發佈!

Myron Marston

2013 年 11 月 8 日

RSpec 團隊剛剛發佈了 RSpec 3.0.0.beta1 – 第一個 RSpec 3 的預發行版本!同時,我們也發佈了 2.99.0.beta1,旨在協助升級過程。

我要感謝所有貢獻者,尤其是核心團隊(AndyBradleyJonSamXavier),讓這次發佈得以實現。

我現在沒有精力撰寫完整的「RSpec 3 有哪些新功能」部落格文章,但我們主要是根據我們先前宣佈的 RSpec 3 計劃進行變更。詳細的發行說明如下,可讓您了解這些版本的詳細資訊。我們將在未來發佈其他部落格文章,深入討論新功能。

升級過程

RSpec 3 包含許多重大變更,但我們希望這次升級能成為您有史以來最順利的 gem 主要版本升級。為了協助此過程,我們一直在與 RSpec 3 同步開發 RSpec 2.99。每當我們在 3.0 的主分支中進行重大變更時,我們都會在 2.99 中新增相應的棄用。這不僅適用於已移除的 API;也適用於邊緣案例語義的細微變更(為了讓 RSpec 更一致),有些專案可能會依賴這些變更。RSpec 2.99 不僅提供描述所有重大變更(包括許多影響極少數使用者!)的通用升級文件,還為您提供詳細的升級檢查清單。

此外,Yuji Nakayama 一直在開發 transpec – 一個絕對驚人的工具,可以自動升級大多數 RSpec 套件。我在幾個專案上嘗試過,並且對它的運作效果感到驚訝

以下是我建議將專案升級到 RSpec 3 的一般方法

  1. 確保您的測試套件在您目前使用的任何 RSpec 2.x 版本上都是綠色的。
  2. 安裝 RSpec 2.99.0.beta1(或您在執行此過程時的最新 2.99 版本)。
  3. 執行您的測試套件並確保它仍然是綠色的。(應該是這樣,但我們可能犯了錯誤 – 如果它破壞了任何東西,請回報錯誤!)。現在是提交的好時機。
  4. 您會注意到在規格執行結束時會印出一堆棄用警告。這些警告可能會被截斷,因為我們不想重複向您發送相同的棄用警告。若要取得完整的棄用清單,您可以透過設定 config.deprecation_stream = 'rspec.log' 選項將其導向到檔案。
  5. 如果您想了解所有已棄用的內容,最好閱讀棄用訊息。在某些情況下,您有選擇 – 例如繼續透過已擷取的 rspec-collection_matchers gem 使用 have 集合基數匹配器,或將期望表達式重寫為類似 expect(list.size).to eq(3) 的形式。
  6. gem install transpec(請注意,這不需要放入您的 Gemfile:您在套件組合的環境之外,以獨立的可執行檔形式執行 transpec)。
  7. 在您的專案上執行 transpec。請參閱 transpec --helpREADME 以取得完整的選項清單。
  8. 執行測試套件(它應該仍然是綠色的,但最好還是檢查一下!)並提交。
  9. 如果還有任何剩餘的棄用警告(transpec 並不完全處理您可能收到的所有警告),請處理它們。
  10. 一旦您使用 RSpec 2.99 執行無棄用的測試套件,您就可以升級到 RSpec 3。安裝 RSpec 3.0.0.beta1(或您在執行此過程時的最新 3.x 版本)。
  11. 執行您的測試套件。它應該仍然是綠色的。如果任何東西失敗,請開啟 GitHub 問題 – 我們認為這是一個錯誤[^foot_1]!
  12. 提交並享受使用最新 RSpec 版本!

下一步

雖然我們在 RSpec 3 上取得了重大進展,但我們還沒完成。我們還有更多事情要做。(我們還沒有完成我們計劃的一切。)我們認真看待 SemVer,這是我們多年來第一次有機會清理舊的雜物,所以我們想充分利用它 :)。我們希望在未來幾個月內發佈 RC,並在此之後不久發佈最終版本。

發行說明

rspec-core 2.99.0.beta1

完整變更記錄

增強功能

棄用

rspec-core 3.0.0.beta1

完整變更記錄

重大變更

增強功能

棄用

rspec-mocks 2.99.0.beta1

完整變更記錄

棄用

增強功能

rspec-mocks 3.0.0.beta1

完整變更記錄

重大變更

增強功能

棄用

錯誤修復

rspec-expectations 2.99.0.beta1

完整變更記錄

棄用

rspec-expectations 3.0.0.beta1

完整變更記錄

重大變更

增強功能

錯誤修復

棄用

rspec-rails 2.99.0.beta1

完整變更記錄

棄用

增強功能

錯誤修復

rspec-rails 3.0.0.beta1

完整變更記錄

重大變更

[^foot_1]:雖然這有一個注意事項:我們只會在您的測試套件按照文件記錄的方式使用 RSpec API 時才將其視為錯誤。Ruby 的動態特性使其可以以我們無法支援的方式使用 RSpec。