例 : CheckErrors
以下のコードは、CheckErrors メソッドをオーバーライドします。このメソッドの目的は、プロダクションによって生成されたエラーを検証することです。このケースでは、コードは OnAfterProductionStart が 2 つ目のメッセージを送信した後に Tutorial.ExampleOperation によって生成されるエラーを検証します。このコードは、以下の処理を実行します。
-
GetEventLog を使用して、イベント・ログからすべてのエラーを取得します。%UnitTest.TestProductionOpens in a new tab のクラス・ドキュメントでは、このメソッドおよびその引数について説明されています。ここでは、以下の 3 つの引数をメソッドに提供します。
-
“error” — 取得するイベント・ログ・エントリのタイプを指定します。その他の指定可能な値には、“info”、“infouser”、“trace”、“alert” などがあります。
-
Log — 参照によって渡されます。この引数には、メソッドが返されるときにイベント・ログ情報が含まれます。
-
New — 参照によって渡されます。この引数には、新しいイベント・ログ・エントリの数が含まれます。
-
-
new のコンテンツを検証することによって、新しい 3 つのエントリがあることを確認します。この例では、それぞれ Tutorial.ExampleOperation、テスト・プロセス、テスト・サービスによって生成された新しい 3 つのエラーがイベント・ログに存在するはずです。
-
エラー・メッセージに “テスト・エラー・ケース” が含まれていることを確認します。“[” は、ObjectScript の包括関係演算子です。
Method CheckErrors() As %Status
{
Set tSC = $$$OK
Set s = ..GetEventLog("error","","",.err,.new)
Set s1 = $$$AssertEquals(new,3,"Should be 3 new errors(found: "_+$Get(new)_")")
Set text = $Get(err(1,"Text"))
Set eText = "Test error case"
Set s2 =
$$$AssertTrue(text[eText,"Should contain '"_eText_"'(found: '"_text_"')")
if 's1||'s2 set tSC=..Error("Expected error entries don't match")
Return tSC
}
TestControl は、テスト・クラスの IGNOREPRODUCTIONERRORS パラメータの値が 1 の場合にのみ、CheckErrors を呼び出します。