Moq和你传递的参数

时间:2010-06-04 18:38:54

标签: c# .net unit-testing moq

我创建了一个MOQ对象

将它传递给我的班级

调用它并传入一个对象。

如何访问此对象以查看是否设置了正确的属性?

3 个答案:

答案 0 :(得分:2)

如果我正确地阅读了您的问题,您似乎有这样的情况吗?

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

在这种情况下,您可以使用接受谓词的It.Is方法断言传递给Mocked接口的参数:

[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 :(得分:1)

您可以在模拟对象上使用.VerifySet()方法。例如

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

如果设置不正确,则会引发异常。

quick start here中阅读更多内容。

答案 2 :(得分:1)

你的问题有点令人困惑,目前还不清楚你在最后一句中指的是什么对象。

但是,每个Moq包装器都有一个“Object”属性,该属性属于您正在模拟的类型。您只需查看该属性即可访问它。

var myMock = new Mock<MyObj>();

var myProp = myMock.Object.MyProperty;