【发布时间】:2018-10-14 17:36:49
【问题描述】:
我正在设置一个配置以在 create-react-app + typescript 应用程序(我已经退出)中运行我的测试。我正在使用玩笑+酶。在我的 tsconfig.json 中,我设置了 baseUrl='./src',因此我可以在导入模块时使用绝对路径。例如,这是我的一个文件中的典型导入语句:
import LayoutFlexBoxItem from 'framework/components/ui/LayoutFlexBoxItem';
您可以看到路径是绝对的(来自 /src 文件夹)而不是相对的。
当我在调试模式(yarn start)下运行时,这工作正常
但是当我运行我的测试(yarn test)时,我得到了这个错误:
Cannot find module 'framework/components/Navigation' from 'index.tsx'
所以看起来 jest 无法解析这个绝对路径,尽管我已经在我的 tsconfig.json 中设置了它。这是我的 tsconfig.json:
{
"compilerOptions": {
"outDir": "dist",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"baseUrl": "./src"
},
"exclude": [
"node_modules",
"build",
"dist",
"config",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts"
]
}
现在我可以看到在我的项目的根目录中有一个生成的tsconfig.test.json。这是用于测试的 ts 配置。这是它的内容:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs"
}
}
你可以看到这里的“模块”是commonjs,而在默认配置中它是esnext。这可能是一个原因吗?
有没有人能够使用 Jest 和绝对路径对他的打字稿项目进行单元测试?或者这是一个已知的错误?由于我已经从默认配置中弹出,是否有一些设置可以放入我的 webpack 配置中?
感谢您的意见和建议。
【问题讨论】:
标签: typescript visual-studio-code jestjs create-react-app absolute-path