我有tsconfig.json文件,其中映射了我的所有路径
{
"compilerOptions": {
"lib": ["es2015", "dom"],
"target": "es2015",
"baseUrl": ".",
"types": ["reflect-metadata", "jest", "node", "@types/jest"],
"typeRoots": ["./types", "./node_modules/@types"],
"esModuleInterop": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"paths": {
"@utils/*": ["./utils/*"],
"@helpers/*": ["./ui/helpers/*"],
"@domElements/*": ["./core/dom/*"],
"@networking/*": ["./networking/*"],
"@components/*": ["./ui/components/*"],
"@decorators/*": ["./core/decorators/*"],
"@eventFunctions/*": ["./ui/event functions/*"]
}
}
}
我有一个名为form.ts的文件,其中有下面的代码。
import { component } from '@decorators/component';
import { event } from '@decorators/events';
import { DOMElements } from '@domElements/domElements';
import { submitForm } from '@eventFunctions/formSubmit';
@component
export class FormComponent {
@event('submit', submitForm)
getForm(): HTMLDivElement {
return DOMElements.getForm();
}
}
但是,在编译类型记录时,这一切都很好,因为我正在为这个类运行测试->
import { FormComponent } from '../../ui/components/form';
describe('Form class test', () => {
test('It should have a method called getForm', () => {
expect(new FormComponent().getForm).toBeInstanceOf(Function);
});
});
如果出现错误,它将无法从Resolver._throwModNotFoundError Resolver._throwModNotFoundError at Object的'ui/components/form.ts‘中找到模块'@decorators/component’。(ui/components/form.ts:1:1)
我知道这是因为tsconfig.json中的路径映射,它只用于编译代码,看起来jest无法解析form.ts文件中的路径映射,顺便说一句,它是原始类型代码,没有库或框架,那么有什么办法解决这个问题吗?而不丢弃所有这些路径映射并恢复到long imports?
发布于 2022-09-27 12:39:10
我使用特杰斯特插件添加这种支持,然后路径在您的tsconfig.json文件中。
const tsconfig = require('./tsconfig.json');
const moduleNameMapper = require('tsconfig-paths-jest')(tsconfig); // This adds the support
module.exports = {
moduleNameMapper,
preset: 'ts-jest',
testEnvironment: 'node',
rootDir: './',
...
};
然后,您的tsconfig.json中定义的路径将在测试中工作。
{
"compilerOptions": {
"module": "commonjs",
...
"paths": {
"@LIBRARY/*": [
"./src/library/*"
],
"@TEST_LIBRARY/*": [
"./test/library/*"
],
"@APP/*": [
"./src/*"
]
}
}
https://stackoverflow.com/questions/73861624
复制相似问题