自动存根属性

有时你想要模拟一个类或一个接口,并让它的属性就像它们是简单的 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";
}