Как я могу издеваться над таймером, используя шутки? - PullRequest
0 голосов
/ 15 февраля 2019

Как использовать Jest для макета таймера context.getRemaining() и макета sendMessage(), когда он был вызван?

Я хочу, чтобы значение context.getRemaining() было уменьшено на 9 секунд при вызове sendMessage().sendMessage() будет вызываться несколько раз через цикл while.Это начнется с 60000 мс.

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

 return "FINISH";
}

1 Ответ

0 голосов
/ 15 февраля 2019

Вы можете использовать jest.fn() для context.getRemaining и предоставить для него несколько функций:

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

Когда вы пишете тесты, обычно лучше избегать сложной логики в тестовом коде.Для макетов вы можете предоставить явные возвращаемые значения.Иначе вам нужно будет написать тесты для вашего тестового кода, что плохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...