sto*_*toj 8 c# unit-testing moq
我知道我们可以调用SetupAllProperties()自动创建支持属性.但这太严格了,因为它不允许我在getter/setter中执行额外的代码.例如,我想创建一个调用其他方法/事件/逻辑的moq'd setter.
以下代码示例再现了该问题
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
}
}
Run Code Online (Sandbox Code Playgroud)
由于getter设置为返回局部变量的值(我猜这是一个捕获的变量),我希望看到mockA.Object.B == 2.但相反,它是1.
我从根本上错过了什么吗?或者这是一个MOQ错误?我正在运行MOQ 4.0.10501.6
| 归档时间: |
|
| 查看次数: |
2894 次 |
| 最近记录: |