Ожидание Rspec для метода подкласса

#ruby #testing #rspec

#ruby #тестирование #rspec

Вопрос:

Я хочу протестировать этот код:

 smtp = Net::SMTP.start(config[:server])
  

с помощью этой спецификации:

 expect(Net::SMTP).to receive(:start).with('testserver')
  

но примите эту ошибку:

 Failure/Error: Unable to find matching line from backtrace
SystemStackError:
  stack level too deep
  

Чего мне не хватает? Должен ли я использовать что-то вроде fakeweb для прекращения этого действия или ожидать, что функционала будет достаточно для этого этапа?

Комментарии:

1. Должно ли это быть expect(smtp).to receive(:start).with('testserver')

2. попробуйте expect(Net::SMTP).to receive(:start).with('testserver').and_return {|t| super(t)}

3. @Bala, я так не думаю. Он возвращает ошибку: undefined local variable or method 'smtp' for #<RSpec::ExampleGroups::Mailer:0x000000011165b0 @__memoized=nil> .

4. @BroiSatse, wrong number of arguments (0 for 1 ) . Я понятия не имею, о каких аргументах идет речь.

5. @Michael — Какой-нибудь обратный путь?