Как сохранить оригинальную функциональность модуля npm, при этом дразня его для шутливого тестирования? - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь смоделировать библиотеку «момента», чтобы я мог запускать тесты моментальных снимков, не беспокоясь о «текущих» временных метках, автоматически генерируемых с помощью moment(), чтобы исказить мои снимки.

Однако я не могу показатьсясоздать поддельную версию moment() без потери обычной функциональности библиотеки.

Вот что я попробовал:

src/tests/__mocks__/moment.ts
-----------------------------

const moment = require.requireActual("moment");

export default (timestamp: any = 0) => {
  return moment(timestamp);
};

Логика, стоящая за этим издевательством, заключается в том, что он должен просто-ride вызывает moment(), у которого нет какой-либо временной метки, и вместо того, чтобы позволить ему генерировать текущий момент, он будет генерировать момент moment(0).Все остальные функциональные возможности должны быть сохранены, например: moment("2010-05-10") должен генерировать действительный момент для May 10th 2010, и другие связанные функции, такие как moment().startOf("month"), также должны работать.

Однако всякий раз, когда шутка сталкивается с каким-либо видом moment() объявление в моем коде выдает следующую ошибку в результатах тестирования терминала:

TypeError: moment is not a function

Как можно решить эту проблему?

...