У меня есть Jest-тест, который я пишу для функции, которая выполняет вызов API. Если вызов API возвращает 403, должна быть вызвана функция из модуля узла. Я пытаюсь проверить это с помощью фиктивной шутливой функции, но не могу заставить тест использовать версию макета, которую я делаю.
file.spe c. js
import file from './file'
const mockedNodeModule = jest.genMockFromModule('nodeModule')
mockedNodeModule.namedExport = { logout: jest.fn() }
it('call returns a 403', async () => {
await file.apiCall('brand', 'entityType', 'name')
expect(mockedNodeModule.namedExport.logout).toHaveBeenCalled()
})
file. js
import { namedExport } from './nodeModule';
import api from './api';
const apiCall = () => {
return api.makeCall().then(
() => {},
(error) => {
if (error.status === 403) {
namedExport.logout();
}
},
);
};
export default { apiCall };
Проверка всегда не проходит, когда я проверяю, был ли вызван mockedNodeModule.namedExport.logout. Когда я помещаю точку останова в строку, которую она вызывает, кажется, что проверенная версия не используется во время выполнения теста (т.е. она все еще использует модуль из моих node_modules). Я также пытался использовать jest.mock (), но результат тот же. Что-то не так в том, как я настраиваю тест? Может ли шутка не издеваться над модулями узлов в подобных случаях?