У меня есть метод, который записывает изменение конкретной записи в моей базе данных, но сначала он проверяет тип категории на достоверность, прежде чем идти дальше. Если это возвращает false, возникает ошибка.
class UpgradePackageRecorder
CATEGORIES = [ an array of categories here ... ]
def initialize(category)
@category = category
end
def record_change
unless valid_category?
raise "#{category} is not a recognized category"
end
other_methods
end
private
def valid_category?
CATEGORIES.include?(category)
end
end
Я начал писать для этого тест rspec, чтобы убедиться, что ошибка возникла правильно. Вот тестовый пример:
RSpec.describe UpgradePackageRecorder do
describe '#record_change' do
context 'the package type is invalid' do
it 'raises an error' do
recorder = UpgradePackageRecorder.new('Bronze')
expect { recorder.record_change }.to raise_error(RuntimeError, /bronze is not a recognized category/)
end
end
end
end
Когда я запустил тест, я получил эту ошибку:
Failure/Error: raise "#{category} is not a recognized category"
RuntimeError:
bronze is not a recognized category
Почему интерполяция строк проявляется так? Я тоже пробовал как
category + ' is not a recognized category
но это не решило проблему.
Чтобы сделать это еще более запутанным, я взял интерполяцию строк и все еще видел проблему:
Failure/Error: raise "Unrecognized category"
RuntimeError:
Unrecognized category