【发布时间】:2019-07-06 00:00:58
【问题描述】:
这是我的组件
class Foo extends React.Component {
constructor(props) {
super(props);
this.state = {
...
};
this.input = React.createRef();
}
componentDidMount() {
const id = 'bar';
let element = document.getElementById(id);
element.addEventListener('transitionend', () => {
this.setState({ ... });
}, false);
}
...
当我这样设置测试时
import React from 'react';
import { mount } from 'enzyme';
import 'jsdom-global/register';
import Foo from './';
it('renders the component correctly', () => {
const component = mount(
<Foo />
);
component
.unmount();
});
我明白了
console.error node_modules/react-dom/cjs/react-dom.development.js:16647 组件出现上述错误: in Foo(由 WrapperComponent 创建) 在 WrapperComponent 中
考虑在树中添加错误边界以自定义错误处理行为。 ● 正确渲染组件 TypeError:无法读取 null 的属性“addEventListener”
我试过了
ReactDOM.render(<Foo />, document.body);
或者添加这个
const map = {};
Window.addEventListener = jest.genMockFn().mockImpl((event, cb) => {
map[event] = cb;
});
还有这个
const map = {};
document.addEventListener = jest.fn((event, cb) => {
map[event] = cb;
})
在测试中安装 <Foo /> 之前。但这一切都带来了同样的错误。这是为什么呢?
【问题讨论】:
标签: javascript reactjs jestjs enzyme