Итак, я настроил свои макеты точно так же, как в документации (несмотря на то, что мне нужны require и docs, использующие импорт, но это не должно быть проблемой на самом деле)
jest.mock('common-bon/lib/utils/events/EventDomains');
const EventDomains = require('common-bon/lib/utils/events/EventDomains');
...
beforeAll(()=>{
EventDomains.mockImplementation(() => {
return {
app: 'Placeholder'
};
});
});
Это именно так, как они это делаютздесь: https://jestjs.io/docs/en/es6-class-mocks
Но это не работает. Набор тестов завершается с
TypeError: EventDomains.mockImplementation не является функцией
Что означает, что насмешка просто не сработала.
Контекст для того, что мне нужно для макета: * в исходном коде, который вызывает вызываемая мной функция:
handler.fireEvent(domain.app);
где "домен" - это то, что я хочу издеваться:
const domain = EventDomains;
const EventDomains = require('common').utils.getEventDomains();
сложный "путь" получается тем, что я использую в jest.mock (...), который работает для других макетов, где мне не нужно менять mockImplementation
Редактировать: я точно знаю, что это часть "jest.mock (...)", которая не работает, потому что, когда я добавил функцию "mockImplementation" в ОРИГИНАЛЬНЫЙ файл, она работала отлично,[имейте в виду, что jest.mock, а также требование, которое было до .mockImplementation, использовали точно такой же путь. Требование находится в верхней части тестового файла, а .mockImplementation находится в "beforeAll) [хотя наличие его непосредственно ниже требования не имеет значения]