如何使用Jest模拟计时器context.getRemaining()
并模拟sendMessage()
计时器?
我希望在调用context.getRemaining()
时将sendMessage()
减少9秒。 sendMessage()
将通过while循环多次调用。它将以60,000ms开始。
exports.handler = async (context) => {
while (true) {
console.log(context.getRemaining());
await sendMessage();
if (context.getRemaining() < 13000) {
break;
}
}
return "FINISH";
}
答案 0 :(得分:1)
您可以将jest.fn()
用于context.getRemaining
,并为其提供多种功能:
sendMessage = jest.fn(async () => {});
await handler({
getRemaining: jest.fn()
.mockReturnValueOnce(20000)
.mockReturnValueOnce(10000),
});
expect(sendMessage).toHaveBeenCalledTimes(2)
编写测试时,通常最好避免在测试代码中使用复杂的逻辑。对于模拟,您可以提供显式的返回值。否则,您需要为测试代码编写测试,这很糟糕。