Ole*_*Ole 5 typescript tsconfig jestjs ts-jest
尝试使用这些说明将此项目转换为玩笑。除了使用配置的文件外,我一切正常:paths
"paths": {
"@fs/*": ["./src/*"],
"@test/*": ["./test/*"]
}
Run Code Online (Sandbox Code Playgroud)
看起来好像在运行测试时导入语句没有解析并记录下来:
Cannot find module '@fs/container/validation/ValidationContext' from 'Core.spec.ts'
1 | import { ValidationOptions } from "@fs/container/validation/ValidationOptions";
> 2 | import { ValidationContext } from "@fs/container/validation/ValidationContext";
| ^
3 | import { ValidationContainer } from "@fs/container/validation/ValidationContainer";
4 |
5 | import { Core1 } from "@test/core/Core1";
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:221:17)
at Object.<anonymous> (test/core/Core.spec.ts:2:1)
Run Code Online (Sandbox Code Playgroud)
有没有办法让 jest/ts-jest 包含@paths解析导入的同时?
Fra*_*his 33
在根项目文件夹中添加 jest.config.js ,内容如下。
const { pathsToModuleNameMapper } = require('ts-jest');
const { compilerOptions } = require('./tsconfig');
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths),
modulePaths: ['<rootDir>'],
coverageDirectory: '../coverage',
moduleFileExtensions: ['js', 'json', 'ts'],
testRegex: '.*\\.spec\\.ts$',
transform: { '^.+\\.(t|j)s$': 'ts-jest' },
collectCoverageFrom: ['**/*.(t|j)s'],
};
Run Code Online (Sandbox Code Playgroud)
还要确保您的tsconfig.json文件有一个paths字段,如下所示:
const { pathsToModuleNameMapper } = require('ts-jest');
const { compilerOptions } = require('./tsconfig');
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths),
modulePaths: ['<rootDir>'],
coverageDirectory: '../coverage',
moduleFileExtensions: ['js', 'json', 'ts'],
testRegex: '.*\\.spec\\.ts$',
transform: { '^.+\\.(t|j)s$': 'ts-jest' },
collectCoverageFrom: ['**/*.(t|j)s'],
};
Run Code Online (Sandbox Code Playgroud)
我想解决模块路径开始~/我的<baseUrl>/<moduleName>。
感谢OJ Kwon链接,我用(给他点)解决了这个问题。
请参阅模块分辨率路径映射文档
{
"compilerOptions": {
"baseUrl": "src",
"paths": {
"~/*": ["*"]
}
},
}
Run Code Online (Sandbox Code Playgroud)
然后我们也需要告诉jest解析路径。它是通过以下配置完成的:
"moduleNameMapper": {
"~/(.*)": "<rootDir>/src/$1"
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4751 次 |
| 最近记录: |