Jest - Насмешка над функцией, для которой в свою очередь определен метод - PullRequest
0 голосов
/ 15 января 2019

Я конвертирую некоторые старые тесты для использования Jest, и у меня есть функция, которая называется Services.Transactions.get. Обычно вы передаете ему функцию обратного вызова для обработки данных, возвращаемых из удаленного API. В моих тестах я издеваюсь, используя

jest.spyOn(Services.Transactions, 'get').mockImplementation((callback) => { callback(someJsObject); });

Пока все хорошо.

Теперь проблема в том, что у него, в свою очередь, есть метод Services.Transactions.get.watch. Модуль, который я тестирую, использует обе эти функции. Как только я высмеиваю первое из вышеперечисленных, я не могу издеваться над методом наблюдателя. Мне сказали, что Services.Transactions.get.watch не является функцией.

Я пробовал:

  • Определение функции с определенным пустым методом watch и использование ее в качестве реализации для get.
  • Попытка также заменить метод watch с помощью вызовов mockImplementation

Ничего из вышеперечисленного не сработало. Файловые службы исходят не от модуля ES6, поэтому я предпочитаю избегать макетов на уровне модулей. У меня есть другие варианты?

1 Ответ

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

А как насчет прямого подхода:

const mock = jest.spyOn(Services.Transactions, 'get');
mock.watch = jest.fn();
mock.mockImplementation(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...