【发布时间】:2020-10-26 22:38:08
【问题描述】:
有点卡在这个上。我正在将反应单元测试引入我的团队节点/反应项目。我们已经在 FE 中对我们的后端和实用程序进行了很长时间的开玩笑单元测试,但没有进行反应测试。
我正在通过https://redux.js.org/recipes/writing-tests关注测试指南
我的问题是,我创建测试文件的方式与所有其他单元测试的创建和正常运行方式完全相同。我在文件中放了一个假的测试用例:
import React from 'react';
//import { render } from '@testing-library/react';
describe('test', () => {
it('tests', () => {
expect(true).toEqual(true);
});
});
这个测试用例按预期执行。但是,一旦我取消注释 import { render } 行,就会出现以下错误:
FAIL */__tests__/client/views/components/componentToTest.test.jsx
● Test suite failed to run
*/node_modules/@testing-library/dom/dist/helpers.js:44
} catch {// not using Jest's modern fake timers
^
SyntaxError: Unexpected token {
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:316:17)
at Object.<anonymous> (node_modules/@testing-library/dom/dist/pretty-dom.js:13:16)
at Object.<anonymous> (node_modules/@testing-library/dom/dist/config.js:11:18)
对这里发生的事情完全不知所措,找不到任何有类似问题的人。我的 IDE 甚至正确地向我显示了渲染方法的样子,所以我知道它的导入正确。
我已经安装了指南中建议的所有软件包,并且显然已经配置了运行 jsx 文件(因为测试有效,但只是在导入时中断)
一个答案会很好,但真的很想指出如何解决这个问题的正确方向。
谢谢!
另外值得注意的是,我有 babel-jest 和 jest-dom 设置,因为我知道这是很多类似问题的答案。
【问题讨论】:
-
在节点 v8.17.0 上运行测试时,我遇到了同样的问题。在节点 v10 和 v13 上都可以工作。
-
哦,你实际上是 100% 正确的。昨天,我整天都在扯头发。最后,我的机器最终崩溃了,当我再次加载它时它正在工作。我非常困惑,但是由于您的评论,我现在才意识到昨天我正在运行 v8.7.0,因为我必须部署一个使用该版本的服务,并且从未切换回 v10。当我的电脑崩溃时,它会将我的版本重置回 v10,这就是它正常运行的原因。好电话,谢谢。您是如何发现这是节点本身的版本控制问题?
标签: javascript reactjs unit-testing jestjs react-testing-library