jQueryまたはネイティブ要素トリガー関数を使用して実際のユーザーイベントをシミュレートすることがますます困難になってきています。たとえば、テキスト入力があり、ユーザーが文字を追加できないようにするには、イベントでjQuery-normalizedイベントオブジェクトを使用してe.preventDefault()
を呼び出すことができます。ただし、このテストシナリオをプログラム的に検証する方法はありません。TDD JavaScriptのユーザー入力をシミュレートする
preventDefault
を呼び出さなくても、jQueryのkeydownトリガーは「実際の」イベントではないため、次のテストは成功します。正しいコードなし
input.val('test').trigger(jQuery.Event({
which: 68
});
expect(input).toHaveValue('test');
、入力が「TESTD」の値を有していなければならないため、このテストは失敗する(68は「D」の文字コードです)。
誰でもシミュレーションする方法やライブラリを知っていますか?realブラウザのUIイベント?
私はこれを試しましたが、keyCodeとcharCode initKeyboardEventで指定したにもかかわらず、0のままでした。なぜどんなアイデア? Aスペックブラウザのためにこれを行うことができるライブラリがあれば素晴らしいだろう...このハードルを乗り越えることができるなら、私は自分自身を書くかもしれない。 –
@MattyFこれはWebKitのアップストリームコードからのChromeの[バグ](https://bugs.webkit.org/show_bug.cgi?id=16735)で、initKeyboardEventで初期化されたイベントは常に 'keyCode' 'charCode'は0に設定されています。私はあなたがWebKitベースのブラウザの代わりにFFを参照すべきだと思います。 – Ghostoy