mock moment.js в узле с использованием jest - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь смоделировать moment.js, чтобы предсказать мои интеграционные тесты.
Я пытался издеваться jest как это :

import moment from 'moment'
...
jest.mock('moment', () => () => ({valueOf: () => 100})

Но когда я запускаю тест, исходный код использует обычный moment.

Мне удалось переопределить поведение moment, выполнив this , но этого недостаточно, поскольку оно переопределяет другие функции, которые я не хочу менять.

1 Ответ

0 голосов
/ 10 марта 2019

когда мне нужно смоделировать функцию 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().

...