У меня есть метод, который регистрирует ошибки. Он принимал сообщение об ошибке как параметр, но теперь он принимает полную ошибку и вызывает на нем .backtrace. Метод ниже:mocking сообщение об ошибке в Rspec при вызове метода .backtrace
def log_error(error)
puts error.backtrace
puts "RECONCILE_TAX_RATES [#{Time.now}] ERROR [#{error.message}]"
end
Я пытаюсь проверить его, и я не могу определить синтаксис теста. То, что я имел в своем распоряжении есть:
it 'logs errors' do
time = "Tue, 16 Sep 2014 20:18:19 UTC +00:00"
Timecop.freeze(time) do
tax_reconciler = TaxReconciler.new
error_message = "I'm sorry, Dave. I'm afraid I can't do that."
expected = "RECONCILE_TAX_RATES [2014-09-16 20:18:19 UTC] ERROR [I'm sorry, Dave. I'm afraid I can't do that.]"
STDOUT.should_receive(:puts).with(expected)
tax_reconciler.log_error(error_message)
end
end
Я пробовал различные комбинации из документации RSpec, но я продолжаю получать споткнулся о методе .backtrace. Как я могу издеваться над этим сообщением об ошибке, чтобы .backtrace не взорвался? Заранее благодарим за вашу помощь и дайте мне знать, если мне нужно больше информации.
Edit: Для тех, кто с подобной проблемой решение я был:
it 'logs errors' do
time = "Tue, 16 Sep 2014 20:18:19 UTC +00:00"
Timecop.freeze(time) do
expected = "RECONCILE_TAX_RATES [2014-09-16 20:18:19 UTC] ERROR [I'm sorry, Dave. I'm afraid I can't do that.]"
tax_reconciler = TaxReconciler.new
begin
raise "I'm sorry, Dave. I'm afraid I can't do that."
rescue => error_message
STDOUT.should_receive(:puts).with(expected)
STDOUT.should_receive(:puts).with(error_message.backtrace)
tax_reconciler.log_error(error_message)
end
end
end
когда я пытаюсь таким образом я получаю: неопределенный метод 'позволяют 'для # –
Метод 'allow' поставляется с драгоценным камнем' rspec-mocks'. Смотрите: https://github.com/rspec/rspec-mocks – spickermann
У меня есть rspec-mocks в приложении, но более старая версия (2.12.2.). Есть ли синтаксис, поддерживаемый этой более старой версией? Приложение довольно большое, поэтому я не хочу обновлять и прерывать все остальные тесты, если 3.1.1 не поддерживает обратную совместимость. –