【问题标题】:How do I set a nodejs timeout with arrow notation?如何使用箭头符号设置 nodejs 超时?
【发布时间】:2018-03-02 08:20:53
【问题描述】:

我正在使用节点 v9.4.0 运行。在我的测试套件中,如何使用箭头符号设置超时。下面

describe('Test Stratum client[callbacks]', () => {
  this.timeout(5000);

  // Test for onConnect getting called
  it('onConnect', (done) => {

导致错误

  _this.timeout(5000);
        ^

TypeError: _this.timeout is not a function

在不更改“描述”行的情况下,我可以使用什么正确的语法来设置超时?

【问题讨论】:

    标签: node.js unit-testing npm timeout


    【解决方案1】:

    您可以将其余的东西包装在一个函数中并使用 setTimeout

    describe('Test Stratum client[callbacks]', () => {
      setTimeout(() => {
        // Test for onConnect getting called
        it('onConnect', (done) => {
          //The rest of your code, etc etc
        });
      //blah blah blah
      }, 5000);
    

    替代方法

    Node.js 或 JavaScript 中没有超时。但是,如果您在异步上下文中工作,则可以使用解决方法:

    const timeout = ms => new Promise(res => setTimeout(res, ms));
    describe('Test Stratum client[callbacks]', async () => {
      await timeout(5000);
      //etc etc
    

    注意第二行() => {之前的async

    【讨论】:

    • 谢谢@zevee。我对如何使用您的代码有点困惑。所以我应该将我的“describe”行更改为“describe('Test Stratum client[callbacks]', async () => {”?然后在该描述行中,添加“await”,然后将我的每个测试包装在一个“ setTimeout" 块?
    • @satish 没有。那是两种选择。第一个更可取 - 将您的测试包装在 setTimeout 中。详细回答
    猜你喜欢
    • 1970-01-01
    • 2016-12-29
    • 2017-10-06
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多