首页 文章

跟踪使用Sinon / Mocha调用方法的次数

提问于
浏览
1

我正在使用Mocha / Sinon编写测试,以确保我创建的 async tryAtMost 函数调用Promise并且只重试该承诺 X 次 .

我的 tryAtMost 函数看起来像:

async tryAtMost(options, promise, maxRetries, retryInterval = 0) {
    return new Promise(async (resolve, reject) => {
      try {
        const res = await promise(options);
        if (res.statusCode == 200) {
          return resolve(res);
        } else {
          if (maxRetries > 0) {
            setTimeout(async () => {
              return await this.tryAtMost(options, promise, maxRetries - 1, retryInterval);
            }, retryInterval);
          } else {
            return reject('Ran out of retries, failing.');
          }
        }
      } catch (err) {
        return reject(err);
      }
    });
  }

我的Mocha测试为我的 promise 库创建了一个存根,我可以强制它返回我想要的任何状态代码 . 但是,我希望我的测试能够验证 tryAtMost 仅被调用 maxRetries + 1 次 . 如果更熟悉Mocha / Sinon的人可以帮我弄清楚如何做到这一点我会非常感激 .

1 回答

  • 1

    Sinon spies为我完美地解决了这个问题 . 我做了一个我的方法的 Spy 来包装它,我所要做的就是检查 tryAtMostSpy.callCount . 文档很容易:)

相关问题