Я пытаюсь издеваться над moment.js, чтобы предсказать мои интеграционные тесты.
Я пытался издеваться над jest, как это:
import moment from 'moment'
...
jest.mock('moment', () => () => ({valueOf: () => 100})
Но когда я запускаю свой тест, исходный код использует обычный moment.
Мне удалось переопределить поведение moment, выполнив это, но этого недостаточно, поскольку он переопределяет больше функций, которые я не хочу менять.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


когда мне нужно имитировать функцию moment.js, я делаю это, используя stubs из Sinon.js (https://sinonjs.org/releases/v7.2.7/stubs/).
Это происходит в основном так:
import * as sinon from 'sinon'
import moment from 'moment'
...
const stubValueOf = sinon.stub(moment, 'valueOf');
stubValueOf.returns(100);
Важный: рекомендуется использовать заглушки только для определенного теста, а не для всего тестового файла. Итак, после каждого использования используйте stubValueOf.restore(). Если вы хотите «заглушить» метод разными значениями в одном и том же тесте, используйте stubValueOf.reset().