0

そのため、現在、数週間前に実装したクラスの単体テストを作成しています。最初に、私が取り組んでいるクラスの特定の部分をお見せします。

public void PostEvent(eVtCompId inSenderComponentId, eVtEvtId inEventId, long inEventReference, IF_SerializableData inEventData)
        {
            if(mEventMap.ContainsKey(inEventId))
            {
                mEventMap[inEventId](inSenderComponentId, inEventReference, inEventData);
            }
        }

このメソッドには、4 つのパラメーターがあります。1 つ目は列挙型です。2 つ目は、別の列挙型です。3番目、長い。4番目に、インターフェース。

このメソッドが機能するために必要なすべての適切な列挙型とインターフェイスを宣言/コーディングしたと仮定します。この次のビットは、単体テスト コードの一部です。

target.PostEvent(eVtCompId.MainWindowsCommDevice, eVtEvtId.OnLanguageChange, 3, );

ご覧のとおり、インターフェイスにどの値を設定すればよいかわからないため、最後の引数にはまだ何もありません。何か案は?さらに情報が必要だと思われる場合は、お気軽にご質問ください。解決できるよう最善を尽くします。

4

1 に答える 1

2

モック フレームワーク (RhinoMock、Moqなど) を使用して、インターフェイスをモックします。以下の Moq サンプル:

var serializable = new Mock<IF_SerializableData>();
target.PostEvent(..., serializable.Object);

または、インターフェイスを手動で実装することもできます。つまり、テストのローカル クラスに実装できます。

class MySerializable : IF_SerializableData {...}

target.PostEvent(..., new MySerializable());
于 2012-12-01T02:21:11.883 に答える