В основном я пытаюсь ответить на ряд инструкций Rspec. Одна из этих инструкций заключается в следующем:Продолжайте получать ошибки, используя Raise, пытающийся ответить Rspec на raise_error в Ruby?
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)>'
Любых других поднятых ошибок я стараюсь просто не работаю, и я «Я пытаюсь найти правильное направление, чтобы принять это. Может быть, я смотрю не туда?
Извините, что задал этот вопрос еще раз, но я пробовал все и не хочу иметь никаких ошибок. Если вы хотите проверить комментарии другого пользователя here is the URL.
Спасибо за ответ, но не идти. Что странно - это единственный раз, когда код действительно будет запущен, если строка находится в блоке. Возможно, мне стоит упомянуть, что я все это делаю в IDE c9. Когда я запускал его по-своему, я это ошибка, я получил 'rspec spec/12_rpn_calculator_spec.rb /usr/local/rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in \ 'load ':/home/ubuntu/Рабочая область/test-first-ruby-master/lib/12_rpn_calculator.rb: 16: синтаксическая ошибка, неожиданный tSTRING_BEG, ожидающий ключевое слово_do или '{' или '(' (SyntaxError) ... pop + @ array_nums.pop: raise " калькулятор пуст »' –
выглядит так, как будто нужна явная скобка, когда внутри тернарного оператора отредактирован ответ, чтобы добавить их. – baseballlover723
Такая же ошибка, может быть, это что-то связано с IDE? В любом случае, спасибо за вашу помощь, я просто решил изменить код raise_error в rspec, чтобы использовать RunTimeError в качестве аргумента вместо строки, и теперь он работает. Вероятно, это не правильное решение, но на данный момент это нужно будет сделать. –