MiniTest 仕様を使用して、コードが特定の例外を発生させることを次のようにテストできます。
proc { foo.do_bar }.must_raise SomeException
しかし、特定の例外が何であるかは気にしません。例外がスローされることを確認したいだけです。私または別の開発者が Foo#do_bar によってスローされる例外を変更することを決定した場合、予想される例外が一般的に十分に指定されていれば、テストを変更する必要はありません。
つまり、次のようにテストを書きたいと思います (Exception はクラス SomeException の祖先です)。
proc { foo.do_bar }.must_raise Exception
これにより、テストを実行すると失敗します。
[Exception] exception expected, not
Class: <SomeException>
例外に関して、Minitest 仕様をより一般的に記述できますか?
(特定の例外ではなく、例外をチェックしたい実際の理由は、サードパーティのGemを使用していて、そのコードが例外を発生させるためです。実際、私のメソッドAはサードパーティによって呼び出されますメソッド B. A は MyException を発生させますが、B はその例外をキャッチし、別の例外を再発生させます. この例外には、私の例外と同じメッセージがあります [そして、このメッセージはテストで確認する必要があるものです] が、別のクラスです. )