Есть ли способ остановить время в Javascript, чтобы я мог протестировать функцию против DateTime.now()?

#javascript #luxon

#javascript #luxon

Вопрос:

У меня есть функция, которая возвращает DateTime.now() при определенных условиях. Я хочу протестировать эту функцию, но если я протестирую ее против DateTime.now() , это приведет к ошибочному тестированию. Есть ли какой-либо способ заморозить время для выполнения этого конкретного теста, а затем сбросить его?

Комментарии:

1. нет, это не так.

2. @JaromandaX спасибо за комментарий. Есть ли какой-либо способ, которым я могу протестировать это, не делая его ненадежным?

3. Пример кода для рассматриваемой функции был бы полезен, но я думаю, вы хотите издеваться над функцией DateTime.now, чтобы возвращать одно и то же значение при каждом ее вызове. Издевательство над ним по существу переписало бы определение функции на то, что вы укажете, что в вашем случае возвращало бы определенное значение времени. Посмотрите, поможет ли эта ссылка, хотя я не уверен, используете ли вы jest: github.com/facebook/jest/issues/2234

4. @SanchitBatra, спасибо за ссылку. На самом деле я использую jest и не знал @sinonjs/fake-timers . Это было именно то, что мне было нужно.