Добавив i18n с Typescript и Jest, получим «Все файлы должны быть модулями при ошибке« --isolatedModules »» - PullRequest
2 голосов
/ 19 января 2020

Я пытаюсь правильно смоделировать мой файл i18n с машинописью и шуткой, но я продолжаю получать эту ошибку при запуске теста:

  TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` option):
    __tests__/__mock__/react-i18next.ts:1:1 - error TS1208: All files must be modules when the '--isolatedModules' flag is provided.

    1 jest.mock('i18next', () => ({

реагировать-i18next.ts:

jest.mock('i18next', () => ({
  use: () => {
    return {
      init: () => { }
    };
  },
  t: k => k
}));

Мой jest.config:

module.exports = {
  verbose: true,
  roots: ["<rootDir>"],
  testRegex: "/__tests__/.*\\.(test|spec)\\.tsx?",
  transform: {
    "^.+\\.tsx?$": "ts-jest",
  },
  moduleNameMapper: {
    "react-i18next": "<rootDir>/__tests__/__mock__/react-i18next.ts"
  },
};

i18n.ts

import i18n from "i18next";
import {initReactI18next} from "react-i18next";
import english from "./locales/en/common.json";
import french from "./locales/fr/common.json";

i18n.use(initReactI18next).init({
  lng: 'en',
  resources: {
    fr: {
      translation: french,
    },
    en: {
      translation: english,
    },
  },
  interpolation: {
    escapeValue: false,
  },
  fallbackLng: ["en"]
});

export default i18n;

1 Ответ

0 голосов
/ 19 января 2020

Когда вы помещаете файл в __mocks__, вам не нужно отображать его, используя

moduleNameMapper: {
  "react-i18next": "<rootDir>/__tests__/__mock__/react-i18next.ts"
},

. Чтобы реализовать ложную реализацию, вы можете настроить i18next на использование специальный язык , называемый cimode , который будет делать именно то, что вы пытаетесь сделать с помощью макета.

Вместо того, чтобы издеваться над lib, попробуйте сделать отдельную конфигурацию i18next с помощью этого cimode язык.

...