1

我正在编写一个测试助手,它有这个方法:

def todo msg = ''
  assert false, '@TODO: ' + msg
end

基本上我想要一个快速的方法来让测试失败。接下来,我想测试一下这个方法(因为它会被封装在一个可交付的 helper 中)。所以我想写这样的东西:

test 'todo' do
  result = todo
  expected = '@TODO: '
  assert_equal expected, result
end

assert false但它只是在被调用时失败。那么,我将如何测试这种方法呢?

4

1 回答 1

5

这个助手应该和 一起工作Test::Unit,对吗?我相信这assert false会引发一个被Test::Unit. 您可以将调用包装todo在一个begin...rescue块中并捕获该异常。

Ruby 标准库中的test/unit内容实际上是Minitest::Unit——当一个断言失败时,它会引发一个Minitest::Assertion异常。你可以rescue这样。

对于 "real" ,它会在断言失败时Test::Unit引发 a 。Test::Unit::AssertionFailedError

于 2012-07-08T09:50:02.770 回答