自動存根屬性

有時你想要模擬一個類或一個介面,並讓它的屬性就像它們是簡單的 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";
}