2012-01-14 27 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

你如何使ReturnsAsync工作?我得到「無法將lambda表達式轉換爲___類型,因爲它不是委託類型」。 – johni 2017-04-22 14:53:31

+0

@johni請參閱http://stackoverflow.com/questions/31527394/moq-returnsasync-with-parameters和http://stackoverflow.com/questions/21253523/setup-async-task-callback-in-moq-framework – TrueWill 2017-04-24 13:40:44

相關問題