javascript - document.addEventListender 测试无法使用 Jest 和 Enzyme
问题描述
示例组件:
class Modal extends Component {
componentDidMount() {
document.addEventListener('keydown', this.onEscPress, false);
}
componentWillUnmount() {
document.addEventListener('keydown', this.onEscPress, false);
}
@bind onEscPress(event) {
if (event.keyCode === 27) {
this.props.onClose();
}
}
render() {
<div className=".modal">...</div>
}
}
我的测试:
const closeModal = jest.fn();
const wrapper = shallow(<Modal onClose={closeModal} />);
it('executes the `onClose` function when `esc` key is pressed', () => {
const modal = wrapper.find('.modal');
modal.simulate('keydown', { keyCode: 27 });
expect(closeModal).toBeCalled();
});
但是我的测试失败了,因为closeModal()
没有运行......
解决方案
推荐阅读
- macos - 尝试在 Mac OS Catlina 上运行 opensmile-2.3.0 时出现“错误:全局命名空间中没有名为“signbit”的成员?
- reactjs - 上述错误发生在
零件: - javascript - 通过javascript代码获取带有Jsoup填充body标签的Html内容
- r - R函数/循环以获取逐列值
- laravel - Laravel - [路线:评估.appraisal_goals.manager_employee_goal]缺少必需的参数
- swift - 如何在 SocketManager 的配置 Swift 上添加 sessionDelegate 选项
- matlab - fitnlm 后 MATLAB R2017B LogLikelihood 中的小错误?
- c++ - C++ 阻止访问临时
- azure - 我们可以在 MVC Web 应用程序中为 Azure AD 身份验证设置自定义过期时间吗
- python - 在熊猫中获取特定日期的最短和最长时间