2010-06-04 53 views
3

我創建了一個MOQ對象起訂量和參數傳遞

它傳遞給我的課

調用它並傳遞一個對象。

如何訪問此對象以查看是否設置了正確的屬性?

+0

你經過實際模擬到類或模擬。目的? – 2010-06-04 19:00:12

+0

這就是我想要做的: MyMock.MyMethod(MyObjectINeed); 我如何獲得MyObjectINeed? – zachary 2010-06-04 20:43:18

+0

爲什麼你不只是提及它呢? var myObj = myObjectINeed; MyMock.MyMethod(MyObj中); Assert.That(myObj)!= null。 – womp 2010-06-06 15:50:17

回答

2

如果我正確地閱讀你的問題,你似乎有這樣的情況?

public void DoTheCalculation(ICalculator calculator) { 
    calculator.Calculate(this /* Or any other object */); 
} 

在這種情況下,你是可以通過使用一個接受謂詞It.Is方法的嘲笑接口的參數斷言:

[TestMethod] 
public void DoTheCalculation_DoesWhateverItShouldDo() { 
    Mock<ICalculator> calcMock = new Mock<ICalculator>(); 
    CalculationParameters params = new CalculationParmeters(1, 2); 
    params.DoTheCalculation(calcMock.Object); 

    calcMock.Verify(c => c.Calculate(It.Is<CalculationParameters>(
         c => c.LeftHandSide == 1 
           && c.RightHandSide == 2)); 

} 
1

對於此模擬對象,您使用.VerifySet()方法。例如

mockObject.VerifySet(o => o.Name = "NameSetInMyClass"); 

如果設置不正確,將引發異常。

瞭解更多quick start here

1

你的問題有點令人困惑,目前還不清楚你最後一句中提到的是什麼對象。

但是,每個Moq包裝器都有一個「Object」屬性,它是您正在模擬的類型。您只需查看該屬性即可訪問它。

var myMock = new Mock<MyObj>(); 

var myProp = myMock.Object.MyProperty;