Озвучивание существующего метода объекта в тесте RSpec
Я использую Mandrill для отправки электронных писем, и я определил $m в itinializer:
$m = Mandrill::API.new 'XmylongkeygoeshereTg'
Мне нужно проверить функцию, которая отправляет электронное письмо, поэтому мне нужно заглушить $m.messages.send
метод как-то на этом существующем объекте. Я прочитал это stub_chain
это грязный способ добиться этого, но даже это не сработало. Другой способ, которым я пытался, был с allow($m.messages).to
как это:
it "sends emails to a group" do
# stub Mandril's email sending, so no actual emails will be sent.
allow($m.messages).to receive(:send) { nil }
expect(subject.my_sending_emails_method).to be_true
end
Хотя ошибки нет, эффект заглушки также отсутствует - электронные письма все еще отправляются.
Подскажите пожалуйста, как его заглушить?
1 ответ
Там может быть более одного ответа, но я нашел работу:
allow($m).to receive_message_chain(:messages, :send) { nil }