惯用语测试::等于expect {}的单位。更改{} .by(x)

时间:2014-08-22 11:57:15

标签: ruby rspec testunit ruby-1.8.7

现在,我只是在执行前后两次使用assert_equal,并且不会造成太大伤害。但我之前使用过RSpec,并且喜欢expect{}.to change成语的可读性。我不能简单地在这个项目中使用RSpec - 不是我的项目,而不是我的堆栈。

是否有更惯用的方式用Test :: Unit表示预期的变化/增量?

谢谢。

我正在使用Ruby 1.8.7

1 个答案:

答案 0 :(得分:2)

要使用测试单元完成assert_change,您可以自己动手。

这是让您入门的示例代码。根据您的喜好进行调整。

def assert_change valuer, delta, changer, message = nil
  expect = valuer.call + delta
  changer.call
  actual = valuer.call
  assert_equal expect, actual, message
end

用法:

@x = 123

def foo
  @x += 456
end

assert_change(lambda{@x}, 456, lambda{foo})