Ruby 字符串传递是一个?浮动验证

Ruby 字符串传递是一个?浮动验证,ruby,rspec,Ruby,Rspec,我有一个方法可以检查一个参数是否是浮点数,如下所示: 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 但是当我运行r

我有一个方法可以检查一个参数是否是浮点数,如下所示:

  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\u of?
而不是
is\u a?
,但它产生了相同的结果。在前面的测试中,我使用
c=Customer.new
实例化
c
。另外,我不知道这是否有什么不同,但我只使用ruby。没有栏杆

您必须将一个块传递到
expect
中,以便RSpec运行该块并挽救错误。否则,它将在调用
to
之前运行
to_rad
,导致在执行RSpec匹配器之前引发异常。尝试:

expect { c.to_rad('65A.98') }.to raise_error(ArgumentError)

您必须将一个块传递到
expect
,以便RSpec运行该块并挽救错误。否则,它将在调用
to
之前运行
to_rad
,导致在执行RSpec匹配器之前引发异常。尝试:

expect { c.to_rad('65A.98') }.to raise_error(ArgumentError)

您必须将一个块传递到
expect
,以便RSpec运行该块并挽救错误。否则,它将在调用
to
之前运行
to_rad
,导致在执行RSpec匹配器之前引发异常。尝试:

expect { c.to_rad('65A.98') }.to raise_error(ArgumentError)

您必须将一个块传递到
expect
,以便RSpec运行该块并挽救错误。否则,它将在调用
to
之前运行
to_rad
,导致在执行RSpec匹配器之前引发异常。尝试:

expect { c.to_rad('65A.98') }.to raise_error(ArgumentError)