有一种方法我想检查结果:

 result.should  == [1.0,2.0,3.0]

但我收到一个错误:
   expected: [1.0, 2.0, 3.0]
        got: [1.0, 2.0, 3.0] (using ==)

我认为问题在于四舍五入,但我不知道如何比较它们,例如偏差为 0.1。

谢谢,呼吸暂停。
我写了我自己的匹配器,如果它对某人有帮助:
RSpec::Matchers.define :be_closed_array do |expected, truth|
  match do |actual|
    same = 0
    for i in 0..actual.length-1
      same +=1 if actual[i].round(truth) == expected[i].round(truth)
    end
    same == actual.length
  end

  failure_message_for_should do |actual|
    "expected that #{actual} would be close to #{expected}"
  end

  failure_message_for_should_not do |actual|
    "expected that #{actual} would not be close to #{expected}"
  end

  description do
    "be a close to #{expected}"
  end
end

最佳答案

采用:

 .should be_close

甚至:
 .should be_within

引用这里 http://rubydoc.info/gems/rspec-expectations/2.4.0/RSpec/Matchers

关于ruby-on-rails - 比较浮点数组时 rspec 测试的舍入问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6855944/

10-13 06:04