2016-12-15 90 views
0

我有以下規格:我可以在這裏使用「is_expected」嗎?

describe 'blah blah blah' do 
    it 'yadda yadda yadda' do 
    expect(Foo).not_to receive(:bar) 
    subject 
    end 
end 

需要明確的是,測試通過,如果Foo.bar不叫。

我很好奇,it可以變成一行,使用is_expected語法?

describe 'blah blah blah' do 
    it { is_expected.to... } 
end 

回答

1

您可以after

after { subject } 
it { expect(Foo).not_to receive(:bar) } 
+0

謝謝你,但我的意思是:可以把它變成使用is_expected語法的單線程,所以我不必調用主題? –

+0

我相信,在這種情況下是不可能的。你可以這樣做,如果你的'#bar'改變了一些東西。如果是這樣的話,你可以這樣做:'{expect {subject} .to {Foo.bars_count} .by(1)}' – unkmas

0

您可以在around(:each)塊調用subject做到這一點。

describe 'blah blah blah' do 
    around(:each) { |example| subject; example.run } 
    it { is_expected not_to receive :bar } 
end 

這是不是一個真正的一行程序,但around(:each)運行的組(describe在這種情況下)在每個例子中,因此可以節省重複,如果你有多個實例。

0

你可以這樣做

describe 'blah blah blah' do 
    before { expect(Foo).not_to receive(:bar) } 
    it { is_expected } 
end 

我已經做了幾次,我的一些同事們發現這種風格是晦澀

相關問題