2012-01-14 2 views
4

私はいくつかのコードをテストしたい:私はそれに送信する同じオブジェクトを返すようにモックを設定しますか?

public ViewModel FillClientCreateViewModel(ViewModel model){ 
    model.Phone = new Phone { Name = "Test"}; 

    model.Phone = _entityInitializer.FillViewModel(model.Phone); 
} 

私も、私はそれに与えるのと同じオブジェクトを返すために、セットアップFillViewModelしたいです。

私のテスト:

 entityInitMock.Setup(x => x.FillViewModel(It.IsAny<PhoneViewModel>())).Returns(It.IsAny<PhoneViewModel>()); 

var result = TestedInstance.FillClientCreateViewModel(CreateViewModel); 

result.Phone.Name.ShouldBe("Test"); 

しかし、この場合には、私のテストでは、落ちた - result.Phone.Nameが私のモックによって清浄化されたため。

モックを設定して、私に与えるオブジェクトと同じオブジェクトを与えることができます。

答えて

9
entityInitMock.Setup(x => x.FillViewModel(It.IsAny<PhoneViewModel>())) 
    .Returns((PhoneViewModel m) => m); 

Moq QuickStartは、同様の質問の参考になります。

+0

ReturnAsyncでどのように作業しますか?私は "それがデリゲート型ではないので、ラムダ式をタイプ___に変換することはできません。" – johni

+0

@johni http://stackoverflow.com/questions/31527394/moq-returnsasync-with-parametersおよびhttp://stackoverflow.com/questions/21253523/setup-async-task-callback-in-moq-frameworkを参照してください。 – TrueWill

関連する問題