通过创建private static
字段共享上下文的方法有哪些缺点?
public class MyTests3 : IDisposable
{
private static Mock<ILogger> _loggerMock = new Mock<ILogger>();
public void Dispose()
{
_loggerMock.Invocations.Clear();
}
[Fact]
public void Debug_OnInit_CalledOnce()
{
// arrange & act
_loggerMock.Object.Debug("first");
// assert
_loggerMock.Verify(l => l.Debug(It.IsAny<string>()), Times.Once);
}
[Fact]
public void Debug_OnExecute_CalledOnce()
{
// arrange & act
_loggerMock.Object.Debug("second");
// assert
_loggerMock.Verify(l => l.Debug(It.IsAny<string>()), Times.Once);
}
}
另一个问题是,我应该在测试完成后为mock对象调用Reset
吗?
您应该避免在测试之间共享状态。它可能会产生不需要的和不可预测的行为,尤其是当测试并行运行时。
这也是为什么更喜欢辅助方法来设置和取消最佳实践的原因之一。