我现在用React Jest测试代码,如果一个组件是单个的,并且没有导入其他东西,"npm test"运行的很顺利,现在我想一起测试多个组件,我马上得到这个错误:
语法错误:意外标记。
似乎每当React导入其他内容时,比如下面这个:
require( './style/fixed-data-table.css' );
require( './style/jnpr-datatable.scss' );
然后使用Jest,则会抛出意外的标记"."错误。
我的设置肯定有问题,但是哪里有问题?我的 * package. json * 文件包含:
"jest": {
"unmockedModulePathPatterns": [
"<rootDir>/node_modules/react/",
"<rootDir>/node_modules/react-dom/",
"<rootDir>/node_modules/react-addons-test-utils/"
]
}
而且 . babelrc * 文件已经在根目录中了, babel-jest * 也包含在内。
4条答案
按热度按时间6xfqseft1#
看一下webpack integration的jest文档。问题是jest除了js之外不能和其他东西一起工作。所以你必须模拟你导入的所有非js文件。最简单的方法是在你的jest配置中配置一个
moduleNameMapper
。__mocks__/styleMock.js
的代码是这样的。w6lpcovy2#
最简单的方法是添加一个
identity-obj-proxy
包:yarn add --dev identity-obj-proxy
并使用它来自动模拟CSS/SCSS模块。
将以下内容添加到
package.json
:或将以下代码转换为
jest.config.ts
:这样,(S)CSS模块类名将在测试中自动检索。
这是来源。
bis0qfac3#
1.将以下内容添加到jest.config.js
bwleehnv4#
我解决这个问题的方法是在
.babelrc
文件中添加这两行代码我的package.json看起来像这样: