Jest - фиктивная функция, которая не экспортируется - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть файл, который экспортирует одну функцию, которая полагается на частную:

function __a(filePath, someFunction){
  // do some file request
  someFunction(filePath)
}

function b(filePath){
  __a(filePath, require)
}

module.exports = {
  b: b
}

И я хотел бы проверить, что у закрытой функции __a toHaveBeenCalledWith некоторые параметры, поэтому __aна самом деле не пытается извлечь какой-либо файл, который, я не могу гарантировать, существует.

Я понимаю концепцию, что при импорте b я получаю ссылку на функцию, а __a просто живет в областиоб этом, и я не могу получить к нему доступ, так что используйте такие вещи, как:

import appResources from './index';
// ... test
jest.spyOn(applicationResources, '__a').mockImplementationOnce(myParams);

Как я могу избежать исключения __a здесь и убедиться, что он был вызван?

1 Ответ

0 голосов
/ 01 февраля 2019

Невозможно издеваться или шпионить за существующей функцией, которая не используется в качестве метода.

__a и b должны находиться либо в разных модулях, либо a следует использовать какметод в том же модуле.Для модулей CommonJS существует существующий объект exports, который можно использовать:

exports.__a = function __a(filePath, someFunction){
  // do some file request
  someFunction(filePath)
}

exports.b = function b(filePath){
  exports.__a(filePath, require)
}

Обратите внимание, что module.exports не заменен, иначе будет невозможно назвать его как exports.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...