RSpec 2.13 發佈了!
Myron Marston
2013年2月23日我剛發佈了 RSpec 2.13。這是一個小版本,包含一些向後相容的增強功能和大量的錯誤修復。 建議所有使用者都升級。
感謝所有幫助實現這次 RSpec 發佈的貢獻者。
值得注意的新功能
分析超過 10 個範例
RSpec 長期以來都具有 --profile
選項。 它會顯示最慢的 10 個範例的報告。 現在您可以傳遞數字選項,使其列印超過 10 個範例。
要列印最慢的 15 個範例,您可以使用
rspec --profile 15
let
和 subject
宣告可以使用 super
使用者要求這個功能已經有一段時間了。 這允許在巢狀群組中覆寫 let
或 subject
宣告,同時委託給父群組的原始定義。只需使用 super()
describe Array do
let(:numbers) { [1, 2, 3, 4] }
context "when evens are filtered out" do
let(:numbers) { super().reject(&:even?) }
end
end
請注意,要使用此功能,您必須在對 super
的呼叫中使用明確的括號; 否則,ruby 會給您一個醜陋的 implicit argument passing of super from method defined by define_method() is not supported
錯誤。
be_within
匹配器支援百分比差異
最好用一個例子來說明
# The existing `be_within` matcher (which still works):
expect(account.balance).to be_within(10).of(500)
# Now you can do this, too:
expect(account.balance).to be_within(2).percent_of(500)
include
匹配器可以接受匹配器清單
當您想要驗證列表中項目的某些內容,而不是簡單地驗證項目的身分時,這會很方便。
RSpec::Matchers.define :a_user_named do |name|
match do |user|
user.name == name
end
end
expect(users).to include(a_user_named("Coen"), a_user_named("Daphne"))
文件
RDoc
- http://rubydoc.info/gems/rspec-core
- http://rubydoc.info/gems/rspec-expectations
- http://rubydoc.info/gems/rspec-mocks
- http://rubydoc.info/gems/rspec-rails
Cucumber 功能
- http://relishapp.com/rspec/rspec-core
- http://relishapp.com/rspec/rspec-expectations
- http://relishapp.com/rspec/rspec-mocks
- http://relishapp.com/rspec/rspec-rails
發行說明
rspec-core 2.13.0
增強功能
- 允許
--profile
選項接受計數參數,以決定要顯示的慢速範例數量 (Greggory Rothmeier)。 - 新增與
let!
類似的subject!
。它定義一個明確的主題,並設定一個before
hook,將會調用該主題 (Zubin Henner)。 - 修正
let
和subject
宣告,以便可以在其中使用super
和return
,就像在一般方法中一樣。(Myron Marston) - 允許個別設定輸出顏色。(Charlie Maffitt)
錯誤修復
- 在為匿名錯誤類別的實例顯示錯誤輸出時,不要崩潰 (Myron Marston)。
- 修正預設的回溯篩選器,使名稱中包含「gems」的專案中的行不會被篩選,但已安裝的 gem 中的行仍然會被篩選 (Myron Marston)。
- 修正 autotest 命令,使其對 Windows 相容性使用雙引號而不是單引號 (Jonas Tingeborn)。
- 修正
its
,使父群組中before
或let
宣告中subject
的使用繼續參考父群組的主題。(Olek Janiszewski)
rspec-expectations 2.13.0
增強功能
- 新增對
be_within
匹配器支援百分比差異:expect(value).to be_within(10).percent_of(expected)
(Myron Marston)。 - 新增對
include
匹配器的支援,允許將匹配器清單作為要比對的預期值 (Luke Redpath)。
錯誤修復
- 修正
change
匹配器,使其複製字串以處理已變異的字串 (Myron Marston)。 - 修正
should be =~ /some regex/
/expect(...).to be =~ /some regex/
。先前,這些要麼因為令人困惑的undefined method matches?' for false:FalseClass
錯誤而失敗,要麼是不會實際驗證任何內容的空操作 (Myron Marston)。 - 新增對 diff-lcs 1.2 的相容性,並放寬版本限制 (Peter Goldstein)。
- 修正 DSL 產生的匹配器,允許相同範例中的相同匹配器有多個實例,使其能根據預期值具有不同的描述和失敗訊息 (Myron Marston)。
- 防止在顯示多行字串陣列的差異時出現
undefined method #split for Array
錯誤 (Myron Marston)。 - 在比較非 ASCII 相容編碼的字串時,不要崩潰 (Myron Marston)。
- 移除針對空差異列印的令人困惑的「檢查 #== 的實作」訊息 (Myron Marston)。
rspec-mocks 2.13.0
錯誤修復
- 修正當先前被 stub 為具有多個傳回值的方法(例如,
obj.stub(:foo).and_return(1, 2)
)稍後被 mock 為具有單個傳回值時(例如,obj.should_receive(:foo).once.and_return(1)
)導致奇怪行為的錯誤。(Myron Marston) - 修正與已經有多個具有不同
with
約束的 stub 的方法的 mock 預期相關的錯誤。先前,即使可能與傳遞的參數不符,也使用第一個 stub。 此修復會將此決定延遲到收到訊息時,以便可以根據傳遞的參數選擇適當的 stub 回應 (Myron Marston)。 - 不要在 mock 物件上額外呼叫
nil?
,以防nil?
本身預期會呼叫設定的次數 (Myron Marston)。 - 修正
missing_default_stub_error
訊息,以便正確處理陣列參數 (Myron Marston)。 - 明確禁止
any_instance.unstub!
(Ryan Jones)。 - 修正
any_instance
stub,使其能與Delegator
子類別搭配使用 (Myron Marston)。 - 修正
and_call_original
,使其能與Delegator
子類別搭配使用 (Myron Marston)。 - 修正當在相同範例中的相同類別上使用
any_instance.should_receive
時,any_instance.should_not_receive
的問題。 先前,即使未收到訊息,也會錯誤地報告失敗 (Myron Marston)。
rspec-rails 2.13.0
增強功能
be_valid
匹配器包含驗證錯誤訊息。(Tom Scott)- 新增 cucumber 情境,顯示如何調用匿名控制器非資源動作。(Paulo Luis Franchini Casaretto)
- 當視圖被 stub 時,會使用 Null 範本處理器。(Daniel Schierbeck)
- Rails 4 中產生的
spec_helper.rb
包含對待處理的遷移的檢查。(Andy Lindeman) - 新增
rake spec:features
任務。(itzki) - 為每個 spec/ 目錄自動產生 Rake 任務。(Rudolf Schmidt)