1
我有一個自定義的匹配,即有一個expect
內:RSpec的:否定自定義內強制錯誤匹配器
RSpec::Matchers.define :have_access_to do |action|
match do |user|
allow(controller).to receive(:authorize!)
# perform GET request...
expect(controller).to have_received(:authorize!)
response.code == "200"
end
end
這個工作,只要我把它叫做這樣
it { expect(shop_manager).to have_access_to(:index) }
但是,當我嘗試用否定形式not_to
和expect
客戶內匹配失敗,測試通過:
it { expect(shop_manager).not_to have_access_to(:index) }
我在這裏理解RSpec邏輯:當你想測試失敗與not_to
,它失敗了,一切都很好。
但是這個expect
作爲一個副條件:我想檢查整個請求是否已通過authorize!
步驟。
我知道一個匹配器應該只測試一件事,但我使用它很多,當我將have_received(:authorize!)
檢查添加到每個單個測試時,它會導致很多代碼重複。
有沒有辦法強制RSpec失敗,無論是否否定呼叫?