0
我正在測試一些涉及電子郵件的方法,並試圖使用模擬郵件對象。我顯然是以錯誤的方式去做,因爲測試第一次運行,但隨後測試失敗。如果有人能解釋這裏發生了什麼,我將不勝感激。謝謝。RSpec嘲諷郵件 - 第二次調用時失敗
describe SentMessage do
before(:each) do
Notifier ||= mock('Notifier', :send_generic => true)
end
it "Sends an email" do
Notifier.should_receive(:send_generic).with(['[email protected]'], 'test')
Notifier.send_generic(['[email protected]'], 'test').should_not be_nil
end
it "Sends an email" do
Notifier.should_receive(:send_generic).with(['[email protected]'], 'test')
Notifier.send_generic(['[email protected]'], 'test').should_not be_nil
end
end
結果:
Failures:
1) SentMessage Sends an email
Failure/Error: Notifier.send_generic(['[email protected]'], 'test').should_not be_nil
expected: not nil
got: nil
# ./spec/models/test.rb:14:in `block (2 levels) in <top (required)>'
我剛剛意識到Notifier || = mock ...可能是問題,果然,如果我將其更改爲Notifier = mock,則此測試至少可以工作....我已經將|| =從某人的代碼作爲不每次重新定義常量的方式(w HTTParty :: get);那工作(?),但這不。儘管如此,爲什麼第二次測試沒有工作,因爲Notifier被第一次定義爲模擬,而且(我認爲)在第二次測試中沒有改變? –