2016-11-10 36 views
1

基本上我试图回答一系列Rspec指令。其中的一个说明是这样的:回答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)>' 

任何其他引发的错误我尝试只是不工作,我正在努力寻找正确的方向来采取这一点。也许我在看错地方?任何帮助表示赞赏,谢谢!

回答

0

试试这个:

@array_nums.length >= 2 ? @array_nums << @array_nums.pop + @array_nums.pop : raise StandardError, 'calculator is empty' 
+0

尝试这样做:这是我的错误 - '/usr/local/rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/ lib/rspec/core/configuration.rb:1435:在'load'中:/home/ubuntu/workspace/test-first-ruby-master/lib/12_rpn_calculator.rb:16:语法错误,意外tCONSTANT,期待keyword_do或'{'或'('(SyntaxError) ..._ nums.pop:raise StandardError,'calculator is empty' –

+0

此内容包括'/ home/ubuntu/workspace/test-first-ruby-master/lib/12_rpn_calculator .rb:16:动态常量赋值 ... nums.pop:raise StandardError,'calculator is empty'' –

+0

也许它'因为三元,试试包装在parens中提升参数 –