目前我在Next.js项目中使用自动导入,由根目录中的jsconfig.json
配置:
{
"typeAcquisition": {
"include": ["jest"]
},
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/components/*": ["components/*"],
"@/functions/*": ["functions/*"],
"@/styles/*": ["styles/*"],
"@/pages/*": ["pages/*"]
}
},
"exclude": ["node_modules"]
}
字符串
当我在根目录下的test
目录中添加jest测试时,测试并不指向根目录。我试过:
- 添加指向根目录的
jest.config.js
文件 - 将
typeAcquisition
附加到jsconfig.js
- 将
jsconfig.js
添加到tests
目录。
我不知道哪条路是正确的,或者如何正确地设置它,但这些似乎都不适合我。我可以通过完全删除导入来运行测试,而只是在目录中执行../../
-ing,但这需要我更改所有嵌套的文件-即:在pages/api/budget
中,我调用一个处理程序来转到functions/api/fetchBudget
。为了让Jest测试达到它,我必须更改这两个文件的import语句,以使用标准的../../
语法,而不是我设置的@pages/..
或@functions
。
**TL;DR:**如何设置Jest测试以遍历项目的根目录jsconfig.json
;或者,作为替代,我如何使用它自己的jsconfig.json
设置Jest测试?
4条答案
按热度按时间relj7zay1#
我建议在你的项目中添加
ts-jest
(npm i -D ts-jest)。之后,应该实现pathsToModuleNameMapper
函数,将来自tsconfig
的路径注入到jest.config
设置中:字符串
cnwbcb6i2#
您必须配置Jest来解析导入以匹配
jsconfig.json
文件中的路径。这是通过jest.config.js
文件中的moduleNameMapper
属性完成的。字符串
更多细节请查看Next.js测试文档。
ajsxfq5m3#
问题是我想自动添加与tsconfig.json中定义的相同的昵称,而不是在jest config中再次添加。
我把
"@components/(.*)": "<rootDir>/src/components/$1",
添加到jest.config.js
中,它工作了,但它不是正确的解决方案,rnmwe5a24#
正如上面提到的答案,添加以下内容确实解决了
Cannot find module
问题:字符串
但让我感到困惑的是,将该属性添加到新的
jest.config.js
文件中并不起作用,因为该项目已经在package.json
中的jest
属性下编写了jest配置:型
这个
package.json
配置被用来代替jest.config.js
,所以你可能需要更新那里。