我正在使用这样的Rspec:
expect(approx_equals(value, raw_ref[u].fetch(p.to_s).to_f, 30)).to eq(true)
approx_equals
返回布尔值,30
是接受误差范围的百分比
我被迫这样做,因为我正在比较可能略有变化的数字。
但是当我的一个测试失败时,我会收到这样的错误:
testing element Foo 0.00000s
expected: true
got: false
(compared using ==)
我想在这些日志中添加/更改一些数据。例如:
testing element Foo 0.00000s
expected: 10
margin of error : 30%
got: 23
有没有办法覆盖Rspec痕迹?
答案 0 :(得分:2)
听起来内置的be_within
matcher可能符合您的需求:
it { should be_within(0.5).of(28) }
失败
expected 27.5 to be within 0.5 of 28
答案 1 :(得分:0)
你可以这样检查
首先检查它是否返回整数
expect(actual).to be_a_kind_of(Fixnum)
然后检查条件
expect(actual).to be > expected
expect(actual).to be >= expected
expect(actual).to be <= expected
expect(actual).to be < expected
也在范围
expect(1..30).to cover(expected)
此外,如果你想使用正则表达式
expect(actual).to match(/expression/) #in expression \d+ for digit..