7
我知道我們可以撥打SetupAllProperties()
自動創建支持屬性。但是這太限制了,因爲它不允許我在getter/setter中執行額外的代碼。例如,我想創建一個moq'd setter來調用其他方法/事件/邏輯。MOQ - 如何使用SetupGet/SetupSet手動創建支持屬性?
下面的代碼示例重現問題
public interface IA
{
int B { get; set; }
};
class Test
{
[Test]
public void BackingPropertyTest()
{
int b = 1;
var mockA = new Mock<IA>();
//mockA.SetupAllProperties();
mockA.SetupGet(m => m.B).Returns(b);
mockA.SetupSet(m => m.B).Callback(val => b = val);
mockA.Object.B = 2;
Assert.AreEqual(2, b); // pass. b==2
Assert.AreEqual(2, mockA.Object.B); // fail. mockA.Object.B==1, instead of 2
}
}
由於吸氣劑設置返回局部變量(我猜是現在拍攝的變量)的值,我希望看到mockA.Object.B == 2
。但相反,它是1
。
我從根本上失去了一些東西嗎?或者這是一個MOQ錯誤?我正在運行最小起訂量4.0.10501.6