Не могу изменить макет модуля узла, созданный с помощью genMockFromModule - PullRequest
0 голосов
/ 10 мая 2019

Я делаю насмешку на уровне модулей, помещая файл 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"
    }
};

...