捕获断言语句的结果?

时间:2012-07-08 09:35:07

标签: ruby-on-rails ruby unit-testing testing

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

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

基本上我想要一种快速测试失败的方法。接下来,我想测试这个方法(因为它将封装在一个可发送的帮助器中)。所以我想写这样的东西:

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

但是当assert false被调用时它就失败了。那么,我该如何测试这种方法呢?

1 个答案:

答案 0 :(得分:5)

这个助手应该与Test::Unit一起使用,是吗?我相信assert false会引发Test::Unit捕获的异常。您可以将todo块中的begin...rescue包裹起来并捕获该异常。

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

对于“真实”Test::Unit,当断言失败时,它会引发Test::Unit::AssertionFailedError