所以基本上,我有一个抽象类,它有一个唯一的增量 ID - Primitive
。当 a Primitive
(或更准确地说,是 的继承者Primitive
)被实例化时,ID 会递增 - 直到 ID 溢出的点 - 在这一点上,我向异常添加一条消息并重新抛出。
好的,一切都很好......但我正在尝试测试这个功能,我以前从未使用过模拟。我只需要制作足够的 Primitives 以使 ID 溢出并断言它在正确的时间抛出。
- 实例化 20 亿个对象来做到这一点是不合理的!但是我没有看到另一种方式。
- 我不知道我是否正确使用了模拟?(我正在使用
Moq
。)
这是我的测试(xUnit
):
[Fact(DisplayName = "Test Primitive count limit")]
public void TestPrimitiveCountLimit()
{
Assert.Throws(typeof(OverflowException), delegate()
{
for (; ; )
{
var mock = new Mock<Primitive>();
}
});
}
和:
public abstract class Primitive
{
internal int Id { get; private set; }
private static int? _previousId;
protected Primitive()
{
try
{
_previousId = Id = checked (++_previousId) ?? 0;
}
catch (OverflowException ex)
{
throw new OverflowException("Cannot instantiate more than (int.MaxValue) unique primitives.", ex);
}
}
}
我认为我做错了 - 那么我该如何正确测试呢?