1

私はテストヘルパーを書いています、そしてそれはこの方法を持っています:

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

基本的に私はテストに失敗するための迅速な方法が欲しいです。次に、このメソッドをテストしたいと思います(出荷可能なヘルパーにカプセル化されるため)。だから私はこのようなものを書きたいと思います:

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

test/unitRuby 標準ライブラリに含まれているのは、実際にMinitest::Unitは、アサーションが失敗するとMinitest::Assertion例外が発生することです。あなたはそれをすることができrescueます。

"real"の場合、アサーションが失敗するTest::Unitと a が発生します。Test::Unit::AssertionFailedError

于 2012-07-08T09:50:02.770 に答える