自动存根属性
有时你想要模拟一个类或一个接口,并让它的属性就像它们是简单的 getter 和 setter 一样。由于这是一个常见的要求,Moq 提供了一种快捷方法来设置模拟的所有属性来存储和检索值:
// SetupAllProperties tells mock to implement setter/getter funcationality
var userMock = new Mock<IUser>().SetupAllProperties();
// Invoke the code to test
SetPropertiesOfUser(userMock.Object);
// Validate properties have been set
Assert.AreEqual(5, userMock.Object.Id);
Assert.AreEqual("SomeName", userMock.Object.Name);
为了完整起见,正在测试的代码如下
void SetPropertiesOfUser(IUser user)
{
user.Id = 5;
user.Name = "SomeName";
}