试图引发ArgumentError rspec

ste*_*iel 0 ruby rspec ruby-on-rails

我有一个没有通过的Rspec测试,我不明白为什么.所有其他测试都通过,除了这个需要一个ArgumentError

测试看起来像这样:

describe "#evaluate" do
    it "raises error" do
        expect(rpn.evaluate('%')).to raise_error(ArgumentError)
    end
end
Run Code Online (Sandbox Code Playgroud)

并且我的文件已设置好,因此会引发错误(作为else语句)

else
  raise ArgumentError.new
end
Run Code Online (Sandbox Code Playgroud)

但是rspec告诉我这个

Failure/Error: expect(rpn.evaluate('%')).to raise_error(ArgumentError)
     ArgumentError:
       ArgumentError
Run Code Online (Sandbox Code Playgroud)

apn*_*ing 8

做:

expect { rpn.evaluate('%') }.to raise_error(ArgumentError)
Run Code Online (Sandbox Code Playgroud)

即通过一个块来期待