有沒有一種方法來正確測試異常提升與隱式主體在rspec?RSpec,隱式主題和例外
例如,失敗:
describe 'test' do
subject {raise 'an exception'}
it {should raise_exception}
end
但這傳遞:
describe 'test' do
it "should raise an exception" do
lambda{raise 'an exception'}.should raise_exception
end
end
這是爲什麼?
我想知道爲什麼。主題不被調用和存儲,而是在每個測試中調用。爲什麼我需要用lambda包裝呢? – Mario
因爲「subject」是產生應該調用「should」的東西的塊。通過這樣做,你產生相當於: (拉姆達{提高「例外」})應該raise_exception 而不是像你們會的,上面: (提高「例外」)應該raise_exception 的在調用'should'之前,主體塊將被*評估*(並且,恰巧它會引發異常)。您希望在引發異常的塊上調用「應該」。對不起,如果我不清楚。 –
哎呀,評論格式不太好。澄清更新答案。 –