Spe*_*ord 6 javascript typescript jestjs monorepo ts-jest
我将 Jest 与 Typescript 结合使用。我想创建一个单一存储库。我的文件夹结构是:
fe
|-app1
|--.jest.config.ts
|--tsconfig.json
|-shared
|--dummyData.ts
Run Code Online (Sandbox Code Playgroud)
我想要一个单元测试来app1访问shared文件夹中的一些数据。
fe/app1/demo.spec.ts:
import { someData } from '@shared/dummyData' //<--HERE: the alias is works, but jest can not understand "export" keyword
descrube('demo' () => {
it('demo test', () => {
expect(someData).toBe('DUMMY'));
})
})
Run Code Online (Sandbox Code Playgroud)
fe/shared/dummyData.ts:
export const someData = 'DUMMY';
Run Code Online (Sandbox Code Playgroud)
问题是 jest 抛出错误:
Jest encountered an unexpected token
{"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export const someData = 'DUMMY';
^^^^^^
Run Code Online (Sandbox Code Playgroud)
据我了解,它无法解析由 ts 和 babel 生成的 typescript 或 es6 模块。当文件夹位于 inside时它工作正常sharedapp1,但是一旦它位于外部(并且在根文件夹 ig 之外'<rootDir>/../shared/$1'),它就会开始抛出该错误。
这是我的配置:
我在中描述了别名fe/app1/tsconfig.json:
{
...
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"paths": {
"@/*": ["app/src/*"],
"@shared/*": ["shared/*"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在fe/app1/.jest.config.ts:
module.exports = {
...
transform: {
'^.+\\.js$': '<rootDir>/node_modules/babel-jest',
'^.+\\.(jsx?|tsx?)$': 'ts-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'^@shared/(.*)$': '<rootDir>/../shared/$1',
}
}
Run Code Online (Sandbox Code Playgroud)
一些想法:
tsconfig在根文件夹(fe)中创建一个,但我想从fe/app1文件夹启动单元测试...projects、roots等属性来配置这些东西,但到目前为止我运气不好。| 归档时间: |
|
| 查看次数: |
4579 次 |
| 最近记录: |