15

次のようなコマンドで

var mockObj = new Mock<MyObject>()
var anotherObj = Utilities.DoStuff();
// some tests...
mockObj.Verify(foo => foo.someMethod(anotherObj));

Moqは、IDによる比較を使用しますか、それともパラメーターとしてで呼び出された.Equals()かどうかを判断するために使用しますか?言い換えると、パラメータとして指定したオブジェクトは、検証に合格するために以前に呼び出されたオブジェクトとまったく同じである必要がありますか、それとも等しいオブジェクトである必要がありますか?someMethod()anotherObjfoo.someMethod()someMethod()anotherObj

4

1 に答える 1

23

MoqIDで比較し、IDを使用して指定した正確なインスタンスを探します。equalsこれが希望どおりではなく、代わりに比較を探している場合は、次を使用できますIt.Is

mockObj.Verify(foo => foo.someMethod(It.Is<MyObject>(m => m.Equals(anotherObj))));
于 2013-01-28T00:25:10.200 に答える