Я пишу юнит-тесты для узлового приложения, используя Jest.
Код узла использует стороннюю библиотеку для регистрации информации.
В библиотеке есть функция getLogger, которую вы должны вызвать для возврата объекта регистратора.
Я пытаюсь смоделировать вызовы для этой библиотеки и обнаружить ее в моем модульном тесте.
Код узла выглядит следующим образом:
const logger = require('third-party-libary').getLogger('myModule')
....
function submitSomething() {
....
logger.info('log something')
}
В моем модульном тесте Jest я пытался смоделировать эти вызовы логгера разными способами, но безуспешно, и всегда возвращался как «регистратор не определен»
Я пытался:
jest.mock('third-party-library');
const loggerFactory = require('third-party-library');
const logger = {
error: jest.fn(),
info: jest.fn()
};
loggerFactory.getLogger.mockImplementation(() => logger);
Но всегда возвращается ошибка:
не может найти "информацию" для нулевого объекта
Я тоже это попробовал:
jest.mock('third-party-library')
const loggerFactory = require('third-party-library');
const logger = {
error: jest.fn(),
info: jest.fn()
};
loggerFactory.getLogger = () => logger
Я пробовал это:
jest.mock('third-party-library')
const loggerFactory = require('third-party-library');
const logger = {
error: jest.fn(),
info: jest.fn()
};
loggerFactory.getLogger = jest.fn(() => logger)
с той же ошибкой
Я переключился между jest.mock, чтобы сделать это после необходимости, без везения