Я делаю насмешку на уровне модулей, помещая файл module.js в папку __mocks__
в стороне от node_modules. (корневой уровень проекта)
node_modules/
__mocks__/module.js
Затем в файле module.js внутри __mocks__
Я делаю:
const api = jest.genMockFromModule("module");
module.exports = api;
Работает нормально (макет завершен), но когда я пытаюсь изменить реализацию "модуля" в моих тестовых функциях в моих тестах (module.someFunc), он не заменяет имитированную реализацию:
import * as api from "module";
api.someFunc.mockImplementation(() => Promise.resolve([]);
// OR
api.someFunc = jest.fn().mockImplementation(() => Promise.resolve([]);
// OR
jest.onSpy(api, "someFunc").mockImplementation(() => Promise.resolve([]);
// Tryied with commonJS to
const api = require("module")
api.someFunc.mockImplementation(() => Promise.resolve([]);
// OR
api.someFunc = jest.fn().mockImplementation(() => Promise.resolve([]);
// OR
jest.onSpy(api, "someFunc").mockImplementation(() => Promise.resolve([]);
Использование машинописи с ts-jest;
Jest config:
module.exports = {
preset: "ts-jest/presets/js-with-babel",
globals: {
'ts-jest': {
diagnostics: false,
}
},
testPathIgnorePatterns: ["<rootDir>/node_modules/", "<rootDir>/src/__tests__/setup/"],
setupFilesAfterEnv: [
"react-testing-library/cleanup-after-each",
"jest-dom/extend-expect",
],
moduleNameMapper: {
"\\.(scss)$": "<rootDir>node_modules/jest-css-modules"
}
};