我有一个方法来检查参数是否像这样浮点数:
def validate_input val
raise ArgumentError unless (val.is_a? Float)
end
在我的测试中,我正在使用以下方法检查此方法:
it "only accepts floating point numbers" do
expect(c.to_rad('65A.98')).to raise_error(ArgumentError)
end
但是当我运行rspec时,测试失败并带有
1) Customer#to_rad argument is invalid only accepts floating point numbers
Failure/Error: expect(c.to_rad('65A.98')).to raise_error(ArgumentError)
ArgumentError:
ArgumentError
# ./customer.rb:54:in `validate_input'
我对rspec和测试很新,所以我不知道出了什么问题。我确实尝试使用instance_of?
而不是is_a?
,但它会产生相同的结果。在我的测试中,我使用c
实例化c = Customer.new
。此外,我不知道它是否有所作为,但我只使用红宝石。没有铁轨。
答案 0 :(得分:3)
你必须将一个块传递给expect
,以便RSpec运行该块并挽救错误。否则它将在to_rad
被调用之前运行to
,导致在执行RSpec匹配器之前抛出异常。尝试:
expect { c.to_rad('65A.98') }.to raise_error(ArgumentError)