向Rspec错误添加详细信息

时间:2013-09-30 11:08:43

标签: ruby-on-rails ruby rspec

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

2 个答案:

答案 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..