【问题标题】:Simulate 10min in nunit test在 nunit 测试中模拟 10 分钟
【发布时间】:2014-05-18 09:11:32
【问题描述】:

我正在测试域服务。在单元测试中,我在 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

【问题讨论】:

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

标签: c# nunit moq


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以使用Moles framework 伪造DateTime.Now 的结果。示例见Using Moles with DateTime

    【讨论】:

      猜你喜欢
      • 2012-10-02
      • 2021-08-02
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多