Я использую rails logger, чтобы регистрировать исключение, выброшенное в моем классе. У меня есть следующий метод spe c, чтобы проверить, что исключение выдается и оно регистрируется, но я получаю следующую ошибку на линии ожидаемо (logger) .to receive (: warn) .with ('непредвиденная ошибка') -> (Double "logger"). warn ('непредвиденная ошибка') ожидается: 1 раз с аргументами: ("неожиданная ошибка") получено: 0 раз
есть ли другой способ сделать это?
describe Client do
describe '#send' do
let (:logger) {double('logger')}
let (:subject) {'HTTParty'}
let(:error) { HTTParty::Error.new('unexpected error') }
before do
allow(logger).to receive(:warn).with('unexpected error')
allow(subject)to receive(:get).and_raise(error)
end
it 'raises and logs the exception'
expect{
expect(logger).to receive(:warn).with('unexpected error')
subject.get
}.to raise_error(error)
end
end
end
client.rb
class Client
include HTTParty
base_uri "https://www.example.com"
format :json
def send
begin
response = HTTParty.get(url)
if response.successful?
response
else
raise 'invalid response'
end
rescue HTTParty::Error => e
logger.warn(e.message)
end
end
end