zol*_*ter 12 arrays testing floating-point rspec ruby-on-rails
我想检查一个结果的方法:
result.should == [1.0,2.0,3.0]
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
expected: [1.0, 2.0, 3.0]
got: [1.0, 2.0, 3.0] (using ==)
Run Code Online (Sandbox Code Playgroud)
我认为四舍五入的问题,但我不知道如何比较它们,例如偏差为0.1.
谢谢你,apneadiving.我写了自己的匹配器,如果它可以帮助某人:
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
Run Code Online (Sandbox Code Playgroud)
apn*_*ing 13
使用:
.should be_close
Run Code Online (Sandbox Code Playgroud)
甚至:
.should be_within
Run Code Online (Sandbox Code Playgroud)
请参阅http://rubydoc.info/gems/rspec-expectations/2.4.0/RSpec/Matchers
| 归档时间: |
|
| 查看次数: |
4983 次 |
| 最近记录: |