您如何在 Enzyme 中模拟 keyDown 输入事件(或其他事件)?

IT技术 unit-testing reactjs frontend enzyme
2021-05-07 10:36:56

我试图模拟一个keyDown事件,专门用于输入,keyCode: 13我已经尝试了许多不同的方法来做到这一点,但没有一个有效。我也在网上查看过,这个功能似乎有问题,或者在当前版本的 Enzyme 中不起作用。有没有人确切地知道此功能是否有效,如果有效,模拟输入或其他类型关键事件的正确语法是什么?谢谢!

这是我目前所拥有的,但它不起作用:

const input = wrapper.find('input');
input.simulate('keyDown', {keyCode: 13});

我目前的酶版本是 2.4.1

4个回答

我没有使用 keyCode,而是使用了一个键,在“Enter”的情况下,使用mount

wrapper.find('input').simulate('keypress', {key: 'Enter'})

我正在使用“浅”安装(Enzyme 3.7.0 with Jest 23.6.0)。这对我有用:

const input = wrapper.find('input');
input.simulate('change', { target: { value: 'abcdefg'} });
input.simulate('keydown', { keyCode: 13 });

不推荐使用模拟解决方案

酶模拟应该在版本 4 中删除。主要维护者建议直接调用 prop 函数。一种解决方案是直接测试调用这些props是否正确;或者您可以模拟实例方法,测试 prop 函数是否调用它们并对实例方法进行单元测试。

例如,您可以按下键

wrapper.find('input').prop('onKeyDown')({ key: 'Enter' }) 

或者

wrapper.find('input').props().onKeyDown({ key: 'Enter' }) 

弃用信息:https : //github.com/airbnb/enzyme/issues/2173

wrapper.find('input').simulate('keydown');

它对我有用...