Sve*_*ven 17 c# unit-testing properties moq
我有以下课程:
public class PairOfDice
{
private Dice d1,d2;
public int Value
{
get { return d1.Value + d2.Value; }
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想PairOfDice在我的测试中使用a 返回值1,虽然我在我的真实骰子中使用随机值:
[Test]
public void DoOneStep ()
{
var mock = new Mock<PairOfDice>();
mock.Setup(x => x.Value).Return(2);
PairOfDice d = mock.Object;
Assert.AreEqual(1, d.Value);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是我收到了Invalid setup on non-overridable member错误.在这种情况下我该怎么办?
请注意,这是我第一次尝试实施单元测试.
Jim*_*son 49
您可以.SetupGet在模拟对象上使用.
例如.
[Test]
public void DoOneStep ()
{
var mock = new Mock<PairOfDice>();
mock.SetupGet(x => x.Value).Returns(1);
PairOfDice d = mock.Object;
Assert.AreEqual(1, d.Value);
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参见此处
Are*_*ren 15
你的问题是因为它不是virtual.不是因为你没有二传手.
Moq无法构建代理,因为它无法覆盖您的属性.您需要使用接口,虚拟方法或抽象方法.
| 归档时间: |
|
| 查看次数: |
23686 次 |
| 最近记录: |