1

このコードを使用してデータを作成します。

Method OnBeforeAllTests() As %Status
{
    // Create one MyClass row   
    Do ##class(MyClass).Populate(1)
    Quit $$$OK
}

そしてこれはデータを削除します:

Method OnAfterAllTests() As %Status
{
    Do ##class(MyClass).%KillExtent()
    Quit $$$OK
}

OnAfterAllTests使用して入力したデータのみを削除し、他のデータを削除しないように変更するにはどうすればよいOnBeforeAllTestsですか?

4

1 に答える 1

2

行ったことを自動的に追跡してロールバックできる唯一のものは、トランザクションです。

それ以外は、自分で追跡するか、単体テストで実際にデータを作成しないようにする必要があります。実稼働システムで特定のコードをテストすることはあまり良い方法ではないため、フラグ フィールド「testData」は適切ではありませんが、できると思います。

私の個人的な解決策は、そもそも実際にデータを挿入しないテストを作成することでしたが、これには依存性注入を使用し、モック フレームワークを作成して、単体テストを作成できるようにする必要がありました。

少し簡単な解決策は、すべてのデータ変更を追跡し、最後にそれらをロールバックするオブジェクトを用意することかもしれませんが、おそらくトランザクションを使用するだけで、これをよりうまく行うことができます。

于 2012-10-29T16:59:47.287 に答える