如何将Jest中的'__mocks__'文件夹移至/ test?

M U*_*M U 6 javascript node.js jestjs

我已经开始在Jest中使用模拟来测试我的NodeJS应用程序,并且它们运行良好,但是将__mocks__文件/test夹移动到文件夹将更加有意义,因此可以找到与测试相关的所有内容,而不是在中混入文件/src

有可能吗?我在Jest文档中的任何地方都找不到它。

小智 12

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

这对我有用


Nol*_*urn 2

在我的 package.json 中我有一些笑话配置

"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"
  }
Run Code Online (Sandbox Code Playgroud)

“moduleNameMapper”部分是您所需要的,我在 devDependency 之后添加了这些部分。您还可以在其他地方创建配置文件。

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

编辑:

您必须修改这些路径:

"mockData": "<rootDir>/src/__tests__/data",
"mockService": "<rootDir>/src/__tests__/services"
Run Code Online (Sandbox Code Playgroud)

因此,如果您想在 src 文件夹之外进行 Mock,您可以将我的conf替换为:

"mockData": "<rootDir>/__tests__/data",
"mockService": "<rootDir>/__tests__/services"
Run Code Online (Sandbox Code Playgroud)

  • 您能否详细说明一下,让 Jest 查找 iinto `/test/__mocks__` 而不是与文件相同的文件夹应该是什么样子? (10认同)