1

私はNMock2とMoqフレームワークを初めて使用します。現在のプロジェクトのNMock2コードをMoqコードに変換するためのサポートが必要です。

var myMock= myMockery.NewMock<IMyInterface>();
var myRoleMock = myMockery.NewMock<IRoleInterface>();
var acceptAction = new MyAcceptAction(myRoleMock);
Stub.On(myMock).Method("Accept").Will(acceptAction);

Will()また、上記のコードで何を表しているのかもわかりません。私はWill(Return.Value(something))、NMock2ではMoqと同等であるという考えを持っていReturns(something)ます。

それでWill(something)Will(Return.Value(something))同じですか?

4

1 に答える 1

1

違いを知るには、少し調査する必要があります。内部を見てみましょう。Willメソッドのシグネチャは次のようになります。

public void Will(params IAction[] actions)

現在、IActionインターフェースは、特に重要なインターフェースの1つから派生していますIInvokable。名前が示すように、これにより、実装者を(Invokeメソッドを介して)呼び出すことができます。それはどのように関係していReturn.Valueますか?

public class Return
{
    public static IAction Value(object result)
    { 
        return new ReturnAction(result);
    }
}

もう少し深く掘り下げるとReturnAction、そのInvokeメソッドで、モックによって使用/期待される戻り値を設定するだけであることがわかります。しかし、それは重要ではありません。Return.Valueに必要な単純なラッパー作成IActionですWill

また、このインターフェースMyAcceptActionを実装する必要があります。で正確に何が起こるかを知るために

Stub.On(myMock).Method("Accept").Will(acceptAction);

行、あなたはどのようMyAcceptActionに実装されているかを確認する必要があります。特に、Invokeメソッド。

于 2012-06-22T08:02:02.627 に答える