我有一个没有通过的Rspec测试,我不明白为什么。除了需要ArgumentError
测试如下:
describe "#evaluate" do
it "raises error" do
expect(rpn.evaluate('%')).to raise_error(ArgumentError)
end
end
我的文件已设置好,因此会引发错误(作为else语句)
else
raise ArgumentError.new
end
但是rspec告诉我这个
Failure/Error: expect(rpn.evaluate('%')).to raise_error(ArgumentError)
ArgumentError:
ArgumentError
答案 0 :(得分:8)
执行:
expect { rpn.evaluate('%') }.to raise_error(ArgumentError)
即通过一个块来预期
答案 1 :(得分:2)
将rpn.evaluate('%')作为参数和块传递的区别在于
expect(rpn.evaluate('%')).to raise_error(ArgumentError)
将检查rpn.evaluate('%')的输出是否会引发ArgumentError,而
expect { rpn.evaluate('%') }.to raise_error(ArgumentError)
将检查运行代码块 rpn.evaluate('%')是否会引发ArgumentError。