我的项目中有一个config
和constants
文件夹。分别位于src\config\test.ts
和src\constants\index.js
。
我已经将Jest设置为使用moduleNameMapper
,如下所示,所以我可以只执行import config from 'config'
和import { SOME_CONST } from 'constants'
"moduleNameMapper": {
"config$": "<rootDir>/src/config/test.js",
"constants$": "<rootDir>/src/constants/index.js"
}
字符串
然而,在我的测试中,任何使用import { SOME_CONST } from 'constants'
的文件总是得到SOME_CONST
的undefined
值,而任何使用config
默认导出的文件都可以正常工作。
这是一个已知的问题吗?我在这里做错了什么吗?似乎无法确定。
3条答案
按热度按时间mcvgt66p1#
我和你有同样的问题,但我最终找到了解决这个问题的github issue。它看起来像
constants
是一个核心模块,因此在jest的模块Map之前进行了评估。我发现了这个对我有用的评论,并说把它放在你的测试文件中:字符串
另一种方法是按照@dougajmcdonald在上面his comment中的建议,将你的webpack别名从
constants
重命名为其他名称,例如app-constants
。nwsw7zdq2#
我也遇到了同样的挑战:用
babel-6
设置jest
。以前,我使用
create-react-app
(CRA)方法做了很多工作。当我遇到这个挑战时,我开始真正欣赏facebook team在提出CRA工具时所做的出色工作。无论如何,这就是我如何应对这个挑战的方式。首先,我们需要澄清事实。
好吧,既然这样,我们开始吧:
1.我按照官方jest docs(24.9)的建议更新了我的密钥
dependencies
,以使用babel-6。字符串
1.我去了
// comment out
的一些行,以确认我是否会得到一个补救措施,但唉,我得到了一个更详细的error
消息从jest(至少它是很好的解释,谢谢大家)。截图-1:注解掉
import * as C from ...
语句x1c 0d1x的数据
屏幕截图-2:尽管注解掉了
import
常量语句,但jest
仍显示错误消息。的
1.最后,这成功了,经过大量的“谷歌搜索”和反复试验,我终于偶然发现了一个依赖项的工作组合。好吧,考虑到我一直在改变这些,我决定将这些保存为
--devDependencies
,set-upbabel-jest
作为我的.js
代码的Transformer,并更新了我的.babelrc
babel配置文件。型
drnojrws3#
@mwamitovi这可能是我找到的最好的答案。我知道看到Jest <24和babel 6很奇怪,但有时你最终会处理遗留代码。(注意:我使用vue2.js)
我通过添加上面的包和
es2015
成功地让它工作,就像这样(jest v23.x,babel 6):package.json:
字符串
jest.config.js:
模块.exports = {“verbose”:true,“testEnvironment”:“jsdom”,“moduleFileExtensions”:[“js”,“json”,“vue”],“testMatch”:[“**/tests/*. test.(js| JSX| ts| txx)”],“transform”:{“..(vue)$":“/node_modules/vue-jest”,“..(js)$":“/node_modules/babel-jest”},“testURL”:“http://localhost/",“transformIgnorePatterns”:[“node_modules/(?!(p-retry)/)",] }
在你的.babelrc
“env”:{“test”:{“”:[“env”,{“modules”:alse,“targets”:{“browsers”:["> 1%",“last 2 ersions”,“not ie <= 8”]} }],“stage-2”,“es2015”## this is key ],“plugins”:[“transform-vue-jsx”,“transform-runtime”] }