【发布时间】:2018-12-20 12:57:52
【问题描述】:
我已经开始在 Jest 中使用模拟来测试我的 NodeJS 应用程序并且它们运行良好,但是将 __mocks__ 文件夹移动到 /test 文件夹会更有意义,因此与测试相关的所有内容都在那里而不是混合文件在/src。
以某种方式可能吗?我在 Jest 文档中的任何地方都找不到它。
【问题讨论】:
标签: javascript node.js jestjs
我已经开始在 Jest 中使用模拟来测试我的 NodeJS 应用程序并且它们运行良好,但是将 __mocks__ 文件夹移动到 /test 文件夹会更有意义,因此与测试相关的所有内容都在那里而不是混合文件在/src。
以某种方式可能吗?我在 Jest 文档中的任何地方都找不到它。
【问题讨论】:
标签: javascript node.js jestjs
在我的 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"
}
“moduleNameMapper”部分是您需要的,我在 devDependencies 之后添加了这些部分。您也可以在其他地方创建配置文件。
https://jestjs.io/docs/en/configuration
编辑:
你必须修改这些路径:
"mockData": "<rootDir>/src/__tests__/data",
"mockService": "<rootDir>/src/__tests__/services"
因此,如果您想在 src 文件夹之外进行 Mock,您可以将我的 conf 替换为:
"mockData": "<rootDir>/__tests__/data",
"mockService": "<rootDir>/__tests__/services"
【讨论】:
/test/__mocks__ 而不是与文件相同的文件夹的样子?
jest.mock('../src/service', () => require('./__mocks__/request'));
这对我有用
【讨论】: