keyDown
イベント、特にEnter、keyCode: 13
。これを行うためにいくつかの異なる方法を試しましたが、どれも機能していません。私もオンラインで調べましたが、この機能はバグがあるか、現在のバージョンのEnzymeで動作していないようです。この機能が機能するかどうかを誰もが確実に知っていますか?もしそうなら、エンターまたは他のタイプのキーイベントをシミュレートするための適切な構文は何ですか?ありがとう!
これは私が現在持っているものであり、機能していません:
const input = wrapper.find('input');
input.simulate('keyDown', {keyCode: 13});
私の現在の酵素バージョンは2.4.1です
KeyCodeを使用する代わりに、「Enter」の場合、mount
を使用してキーを使用しました。
wrapper.find('input').simulate('keypress', {key: 'Enter'})
私は「浅い」マウントを使用しています(Jest 23.6.0でEnzyme 3.7.0)。私のためのこの仕事:
const input = wrapper.find('input');
input.simulate('change', { target: { value: 'abcdefg'} });
input.simulate('keydown', { keyCode: 13 });
wrapper.find('input').simulate('keydown');
わたしにはできる...
酵素シミュレーションはバージョン4で削除されることになっています。メインのメンテナーは、prop関数を直接呼び出すことを提案しています。 1つの解決策は、これらのプロップを呼び出すことが正しいことを直接テストすることです。または、インスタンスメソッドをモックアウトし、prop関数がそれらを呼び出すことをテストし、インスタンスメソッドを単体テストすることができます。
たとえば、キーダウンを呼び出すことができます
wrapper.find('input').prop('onKeyDown')({ key: 'Enter' })
または
wrapper.find('input').props().onKeyDown({ key: 'Enter' })
非推奨に関する情報: https://github.com/airbnb/enzyme/issues/217
const wrapper = mount(<App />);
const input = wrapper.find('input');
input.props().onKeyDown({key: 'Enter'});
実際には実装に依存します。実装で次のようなものを使用した場合:
if (event.charCode === 13) {
// do something
}
次のようにテストでイベントをシミュレートします。
wrapper.find('input').simulate('keypress', { charCode: 13 });
それが役に立てば幸い :-)。