2

動的パラメーターを取るメソッドをモックする方法はありますか?

私はこのような期待を設定したい:

_hasher.Expect(h => h.ComputeHash(Arg<dynamic>.Matches(o=> o.PropertyA == "123"))).Return("some hash");

エラーが表示されます: 式ツリーに動的式が含まれていない可能性があります。私は確かに次のようなことができます:

_hasher.Expect(h => h.ComputeHash(Arg<object>.Is.Anything)).Return("some hash");

しかし、これが私のテストにギャップを残しているように感じます。動的パラメーターを受け入れるメソッドを持つ依存関係をモックする他の方法はありますか?

4

1 に答える 1

2

これを試して:

_hasher.Expect(h => h.ComputeHash(Arg<object>.Is.Anything)).Return("some hash")
    .WhenCalled(x =>
        {
            dynamic actual = x.Arguments[0];
            Assert.AreEqual("123", actual.PropertyA);
        });

確かにこれは少しハックですが、機能し、テストが失敗したときに役立つメッセージを表示します。

于 2013-04-23T19:10:37.087 に答える