3
我正在尝试使用Moq为特定接口编写一些测试。实现接口的对象的值由我们在这个问题中称为“controller”的类来设置。如何从Moq获得的模拟界面获得价值?
接口:
public interface ITestInterface
{
int number {set;}
}
我的模拟:
Mock<ITestInterface> myTestMock = new Mock<ITestInterface>();
做测试,我希望控制器设置在嘲笑类的数量,但后来我需要得到值来测试它。事情是这样的:
Controller c = new Controller(myTestMock.Object);
c.Initialize(); //initialization will set number to something
Assert.AreEqual(myTestMock.number, 3);
当然,我得到一个错误,因为我无法读取该值,因为该接口没有一个“get”方法。
如何在不更改界面的情况下为我的模拟设置获取?
相反Assert.AreEqual'的',也许你可以用'myTestMock.VerifySet(X => x.number = 3);' –
@ThariqNugrohotomo它会给我同样的错误“缺少获取访问者” – Th0rndike
@ Th0rndike - 删除'Assert'行。 @Thariq是正确的'myTestMock.VerifySet(x => x.number = 3);'工作。 (刚刚测试过,因为它对我来说也是新的)。 - 假设'c.Initialize();'*真*设置数字。我甚至尝试过'myTestMock.VerifySet(x => x.number = 4);'并且测试失败,因为它只认识到它被设置为3,而不是4. – Corak