我正在尝试构建一个单元测试。Position 类在第三方库中实现。但是对于我的单元测试,我需要将 Size 属性设置为特定值。
public class Position
{
private double _size;
private double Size
{
get
{
return _size;
}
internal set
{
_size = value;
}
}
}
我读了这篇文章:如何为包含只读成员的接口创建单元测试存根? 但无法弄清楚如何让它为我工作。
这是被测试的类(只是一个简化的例子)。方法中的pos
参数CalcPositionMetric()
必须是类型Position
:
public class PositionMetrics
{
public PositionMetrics()
{}
public double CalcPositionMetric(Position pos)
{
return 2 * pos.Size;
}
}
这是我的单元测试的一部分:
using NUnit.Framework;
using NMock;
[TestFixture]
public class PositionUnitTests
{
[Test]
public void TestPosition()
{
Mock<Position> tmpPosMock = mFactory.CreateMock<Position>();
tmpPosMock.Expects.One.GetProperty(v => v.Size).WillReturn(7); /* !!! Exception !!! System.ArgumentException : mock object position has a getter for property Size, but it is not virtual or abstract */
/* Execute Test with tmpPositions*/
PositionMetrics pm = new PositionMetrics();
double result = pm.CalcPositionMetric(tmpPosMock.MockObject)
Assert.AreEqual(14, result);
}
}
但正如你所看到的,我得到了一个例外。有人可以帮我解决这个问题吗?也欢迎任何其他解决方案!
干杯康斯坦丁