0

辞書に特定のキーが含まれているかどうかを確認する単体テストを作成しています。キーと値のペアをディクショナリに追加するプログラムの一部を次に示します。

    public void Subscribe(EvtId inEvent, EvtDelegate inCallbackMethod)
    {
        if(mEventMap.ContainsKey(inEvent))
        {
            mEventMap[inEvent] += inCallbackMethod;
        }
        else
        {
            mEventMap.Add(inEvent, inCallbackMethod);
        }
    }

そして、ここにユニットテストコードの一部があります:

    public void SubscribeTest()
    {
        EventHandlerCs target = new EventHandlerCs(eLayer.1stLayer);

        target.Subscribe(EvtId.AccessChange, AccessChangeVT);

        EventHandlerCs_Accessor target2 = new EventHandlerCs_Accessor(eLayer.1stLayer);

        EvtId expectedEvt = EvtId.AccessChange;
        EvtId actualEvt;

        if (target2.mEventMap.ContainsKey(EvtId.AccessChange))
        {
            // ???
            // Assert.AreEqual(expectedEvt, actualEvt);
        }
    }

ContainsKeyキーの実際の値/キー自体(メソッドを使用して辞書で見つけたら)をactualEvtユニットテストコードの変数にマップするにはどうすればよいですか?

必要に応じて、質問に関する詳細情報をお気軽にお尋ねください。

更新:問題の辞書はに設定されてprivateいるため、アクセサーを使用する必要がありました。

4

3 に答える 3

2

それだけじゃないtarget2.mEventMap[EvtId.AccessChange]

于 2012-12-19T04:04:17.993 に答える
0
于 2012-12-19T04:31:43.950 に答える
0

Containsでチェックする代わりに、 TryGetValueを呼び出して、キーが存在するかどうかをチェックし、存在する場合は値を取得します。

 if (target2.mEventMap.TryGetValue(EvtId.AccessChange, out actualEvt))
{
        Assert.AreEqual(expectedEvt, actualEvt);
}
于 2012-12-19T04:53:19.233 に答える