21 votes

Comment déplacer le dossier '__mocks__' de Jest vers /test ?

J'ai commencé à utiliser les mocks dans Jest pour tester mon application NodeJS et ils fonctionnent bien, mais il serait plus judicieux de déplacer les mocks vers les autres applications. __mocks__ vers le dossier /test afin que tout ce qui concerne les tests s'y trouve au lieu de mélanger les fichiers dans le dossier /src .

Est-ce possible d'une manière ou d'une autre ? Je ne le trouve nulle part dans la documentation de Jest.

15voto

ymehenni Points 11

jest.mock('../src/service', () => require('./__mocks__/request'));

Cela a fonctionné pour moi

2voto

Nolyurn Points 331

Dans mon package.json, j'ai une configuration de jest

"jest": {
    "preset": "jest-preset-angular",
    "transform": {
      "^.+\\.js$": "babel-jest",
      "^.+\\.(ts|html)$": "<rootDir>/node_modules/jest-preset-angular/preprocessor.js"
    },
    "transformIgnorePatterns": [
      "node_modules/babel-runtime"
    ],
    "setupTestFrameworkScriptFile": "<rootDir>/src/__tests__/setupJest.ts",
    "moduleNameMapper": {
      "mockData": "<rootDir>/src/__tests__/data",
      "mockService": "<rootDir>/src/__tests__/services"
    },
    "testResultsProcessor": "jest-junit",
    "testMatch": [
      "**/?(*.)(spec).ts?(x)"
    ]
  },
  "jest-junit": {
    "suiteName": "jest tests",
    "output": "./reports/tests/TESTS-junit.xml",
    "classNameTemplate": "{classname}-{title}",
    "titleTemplate": "{classname}-{title}",
    "usePathForSuiteName": "true"
  }

La partie "moduleNameMapper" est ce dont vous avez besoin, j'ai ajouté ces parties après mes devDependencies. Vous pouvez aussi créer un fichier de configuration ailleurs.

https://jestjs.io/docs/en/configuration

EDIT :

Vous devez modifier ces chemins :

"mockData": "<rootDir>/src/__tests__/data",
"mockService": "<rootDir>/src/__tests__/services"

Donc si vous voulez que Mock soit en dehors du dossier src, vous pouvez remplacer mon conf par :

"mockData": "<rootDir>/__tests__/data",
"mockService": "<rootDir>/__tests__/services"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X