最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

我如何使用模拟计时器?

IT培训 admin 7浏览 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)

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

我如何使用模拟计时器?

如何使用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. 暂无评论