2017-09-24 5 views
0

コンパイル済みのクローズコードコードを含むmain.jstest.jsというファイルがあります。リアクションイベントをiframe内のミニコードでシミュレートする

my-site.com/testを開くとtest.jsが読み込まれ、my-site.com/mainをロードしてmain.jsをロードするページにiframeが追加されます。 test.jsはiframe内のmy-site.com/mainのさまざまなユーザー操作をテストします。

問題は私がReactを使用しているので、Reactイベントをシミュレートする必要があるということです。このiframe構造体を使用している理由の一部は、React.addons.TestUtilsがミニコードでロードされていないことがわかったためです。 test.jsをそのままにしておくと、React.addons.TestUtils.Simulateのバージョンを使用して、のイベントをmain.jsにシミュレートすることができます。私はこれが私に生産コードをテストすることができると思った。私は多くの試行錯誤で見つけた何

main.jsが縮小されていない場合、私はちょうど罰金Simulateのそのバージョンを使用することができますが、それは縮小されたとき、私はmainの要素にtest.jsからSimulateを使用することができない、ということでした。

私は正しいですか?ライブラリが関連するウィンドウにロードされていない場合はReact.addons.TestUtils.Simulateを使用できますか?私がしようとしていることをすることは可能ですか、それとも良い方法がありますか?

答えて

0

多くの試行錯誤の末、私はついにReactTestUtils.Simulateを使う必要はないことを発見しました。私は今までReact DOMでイベントを引き起こすことはできませんでしたが、私がする必要があるのは、という普通のEventに設定して、適切なReactイベントを引き起こしたということです。

また、私は「からkeyup」だったシミュレートしようとしていたイベント以来、私も、私は、少なくとも私のブラウザでは、KeyboardEventwhichまたはkeyCodeプロパティを設定することができないことを発見(whichkeyCodeare deprecated)。だから私はevent.whichの代わりにevent.keyを探すようにリスナーを変えなければなりませんでした。 (私はまだ古いブラウザーに対応するためにwhichを探していますが、最初にkeyをチェックしています)。

これは動作します:

inputElement.dispatchEvent(new KeyboardEvent("keyup", {key: "Enter", bubbles: true}); 

うまくいけば、これは他の誰かにいくつかのトラブルを節約!

関連する問題