我正在尝试用Jest测试一些React组件。
我可以成功测试一个普通的JS文件和b)用CJSX(Coffeescript和JSX)编写的React组件。使用Jest的预处理器将CJSX文件处理成JS需要一些配置 - 但这似乎有效。至少我可以测试用CJSX编写的简单React组件。我不认为这个问题特定于编译CJSX文件。
但是:当我引入react-bootstrap时会出现问题。这是必要的,因为我想测试的所有组件都使用react-bootstrap。
当我取消反应bootstrap并且当我离开Jest以自动模拟它时,这同样发生。无论哪种方式,它都必须解析其测试运行器中的文件 - 这就是出现问题的时候。
这是特定的错误消息:
语法错误: 路径/元件/ scripts.cjsx: /node_modules/react-bootstrap/lib/index.js: /node_modules/react-bootstrap/lib/utils/bootstrapUtils.js:/node_modules/react-tools/src/vendor/core/warning.js:意外的令牌......
scripts.cjsx是包含我要测试的组件的文件 - 以及我需要'react-bootstrap'的文件
完整的堆栈跟踪是:
at Object.exports.runInContext (vm.js:43:16)
at JSDOMEnvironment.runSourceText (node_modules/jest-cli/src/environments/JSDOMEnvironment.js:40:10)
at Object.runContentWithLocalBindings (node_modules/jest-cli/src/lib/utils.js:378:17)
at Loader._execModule (node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:234:11)
at Loader.requireModule (node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:845:14)
at Loader.requireModuleOrMock (node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:875:19)
at Object.<anonymous> (node_modules/react-bootstrap/lib/utils/bootstrapUtils.js:19:16)
at Object.runContentWithLocalBindings (node_modules/jest-cli/src/lib/utils.js:397:17)
at Loader._execModule (node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:234:11)
at Loader.requireModule (node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:845:14)
答案 0 :(得分:1)
我从jest-cli修改了JSDOMEnvironment.js以打印出正在加载的模块路径。在bootstrapUtil.js中执行require(&#39; warning&#39;)时(和我的代码的其他部分一样),这就是我所看到的:
_MyLayers[2]
在这里你可以看到&#34; ...&#34;是来自。这是从已弃用的反应工具中获取的,这些反应工具正在通过重新设置来降低。这应该从警告包中获取。我正在寻找一种解决方案,让开玩笑寻找那个包。
对不起,我已经回答了#34;,我想发表评论,但我还没有声名鹊起。
答案 1 :(得分:0)
这是因为需要过时的react-tools
软件包 - 我最近收到了一条非常相似的错误消息,并将其从node_modules
完全删除
这是我看到的错误:
SyntaxError:意外的令牌...... 在eval(原生) 在JSDOMEnvironment.runSourceText