#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 — Какой-нибудь обратный путь?