C# 在nunit测试中模拟10分钟

C# 在nunit测试中模拟10分钟,c#,nunit,moq,C#,Nunit,Moq,我正在测试域服务。在单元测试中,我在10次无效登录尝试后锁定了用户帐户。用户锁定时间为10分钟,之后应通过有效的登录尝试 我的问题是,如何在nunit测试中模拟通过10分钟的时间 [Test] ... for (int i = 0; i < 10; i++) { service.Login(user, "badpassword"); // lockuser for 10 min (inside Login method) } // wait 10min and try to

我正在测试域服务。在单元测试中,我在10次无效登录尝试后锁定了用户帐户。用户锁定时间为10分钟,之后应通过有效的登录尝试

我的问题是,如何在nunit测试中模拟通过10分钟的时间

[Test]
...
for (int i = 0; i < 10; i++)
{
    service.Login(user, "badpassword");
    // lockuser for 10 min (inside Login method)
}
// wait 10min and try to login
[测试]
...
对于(int i=0;i<10;i++)
{
服务登录(用户,“密码”);
//锁定用户10分钟(内部登录方式)
}
//等待10分钟,然后尝试登录

您真的不想将测试锁定10分钟。其目的是让测试尽可能快地运行,并且您不希望一个测试只等待10分钟


理想的方法是让您的代码认为10分钟已经过去,或者让您的代码在运行测试时等待更短的时间。如何做到这一点将取决于您的实现。

您可以伪造
DateTime的结果。现在使用。请参阅示例。

在不知道“如何阻止”的实现的情况下,我们如何提供帮助?你怎么知道10分钟过去了?使用
DateTime.Now
?可以将锁定值作为参数传递,因此可以让单元测试使用2秒而不是10分钟来测试行为。