Отвечая на вопрос rspec для поднятия ошибки в Ruby

В основном я пытаюсь ответить на ряд инструкций Rspec. Одна из этих инструкций такова:

it "fails informatively when there's not enough values stacked away" do
  expect {
     calculator.plus
  }.to raise_error("calculator is empty")
end

Таким образом, я узнал о Raise_error и о том, как на него ответить, я сам создал какую-то ошибку / исключение.

def plus
  @array_nums.length >= 2 ? @array_nums << @array_nums.pop + @array_nums.pop : raise {"calculator is empty"}
  @value = @array_nums[-1]

Чтобы было ясно, в конце есть конец, но текстовый редактор его не обрабатывал. Итак, я поднимаю ошибку, я пытался вызвать ArgumentError и все такое, но я продолжаю получать этот ответ от rspec:

Failure/Error:
   expect {
     calculator.plus
   }.to raise_error("calculator is empty")

   expected Exception with "calculator is empty", got RuntimeError with backtrace:
     # ./lib/12_rpn_calculator.rb:16:in `plus'
     # ./spec/12_rpn_calculator_spec.rb:119:in `block (3 levels) in <top (required)>'
     # ./spec/12_rpn_calculator_spec.rb:118:in `block (2 levels) in <top (required)>'
 # ./spec/12_rpn_calculator_spec.rb:118:in `block (2 levels) in <top (required)>'

Любые другие ошибки, которые я пробую, просто не работают, и я изо всех сил пытаюсь найти правильное направление для этого. Может я смотрю не в том месте? Любая помощь приветствуется, спасибо!

1 ответ

Попробуйте это вместо:

  @array_nums.length >= 2 ? @array_nums << @array_nums.pop + @array_nums.pop : raise StandardError, 'calculator is empty'
Другие вопросы по тегам