0

我正在使用这样的 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 跟踪?

4

2 回答 2

2

听起来内置的be_within匹配器可能适合您的需求:

it { should be_within(0.5).of(28) }

失败了

expected 27.5 to be within 0.5 of 28
于 2013-09-30T11:44:34.490 回答
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..
于 2013-09-30T11:19:53.017 回答