【问题标题】:Is it possible to have timeout for unit tests in js?js中的单元测试可以超时吗?
【发布时间】:2015-01-30 16:41:33
【问题描述】:

如果需要超过 1 秒,我希望每次测试都以错误终止。

我正在使用 Facebook 的 Jest 库,在 JSX 中编写测试并从 Gulp 运行它们(这意味着它们在 node.js 上运行)。

【问题讨论】:

    标签: javascript node.js unit-testing timeout


    【解决方案1】:

    当然可以,但这显然取决于您的测试框架。例如,我使用的是 mocha,它同时支持 suitetest-specific 超时。

    【讨论】:

      【解决方案2】:

      理论上,是的。很简单:

      setTimeout(function() {
        // Print tests that haven't run and clear queue
      }, /* timeout here */);
      

      但在某些情况下,事件循环可能会被饿死。例如:

      (function foreverRun() {
        process.nextTick(foreverRun);
      }());
      

      要解决上述问题,您需要破解 Node 的内部结构,以在处理 nextTickQueue 期间强制短暂中断以检查测试状态。

      对于严格的 Node 解决方案,更可靠的方法是在子进程中运行测试脚本并在超时后将其终止。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多