Озвучивание существующего метода объекта в тесте 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 }
Другие вопросы по тегам