我有以下一行可以在浏览器中正确执行
eval(Babel.transform(template, { presets: ['react'] }).code);
但是当我进行开玩笑的测试时,我得到ReferenceError: React is not defined
我想念什么?
更多信息: 在测试文件中,我具有以下内容:
const wrapper = shallow(<MyComponent/>);
const instance = wrapper.instance();
instance.componentFunction(...)
,然后componentFunction在eval(Babel.transform(template, { presets: ['react'] }).code);
行中,其中template
是它从测试文件中获取的内容,并且可以像<span>...</span>
请让我知道是否需要更多详细信息
答案 0 :(得分:1)
如果在Jest测试文件中使用JSX,则需要在文件顶部添加以下导入行:
import React from 'react';
这样做的原因是Babel将JSX语法转换为一系列React.createElement()
调用,如果您无法导入React,则这些调用将失败。