最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

我如何使用模拟计时器?

运维笔记admin10浏览0评论

我如何使用模拟计时器?

我如何使用模拟计时器?

如何使用Jest来模拟计时器context.getRemaining()并在调用时模拟sendMessage()

context.getRemaining()被召唤时,我希望sendMessage()减少9秒。 sendMessage()将通过while循环多次调用。它将从60,000毫秒开始。

exports.handler = async (context) => {
 while (true) {
    console.log(context.getRemaining());
    await sendMessage();
    if (context.getRemaining() < 13000) {
      break;
    }
 }

 return "FINISH";
}
回答如下:

您可以将jest.fn()用于context.getRemaining并为其提供多种功能:

sendMessage = jest.fn(async () => {});
await handler({
    getRemaining: jest.fn()
        .mockReturnValueOnce(20000)
        .mockReturnValueOnce(10000),
});
expect(sendMessage).toHaveBeenCalledTimes(2)

编写测试时,通常最好避免在测试代码中使用复杂的逻辑。对于模拟,您可以提供显式返回值。否则,您需要为测试代码编写测试,这很糟糕。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论