DOMに表示されるとき、またはDOMから離れるときに要素をアニメートするにはCSSTransitionGroup
を使用しています。それはうまくいく。テストでReactのCSSTransitionGroupを無効にする
今、このコンポーネントをユニットテストしたいと思います。私は一時的なDOMノードを作成して、<body>
に接続し、コンポーネントをレンダリングしてから、いくつかの処理を実行します。その結果、私は子供のDOMノードが消滅することを期待しています。
問題: アニメーションクラスが適用され、CSSアニメーションが終了するまでコンポーネントがDOMに保持されます。これは、私のテストが、その要素がなくなったと主張できるようになるまで、数百ミリ秒も待たなければならないことを意味します。私はそれをすることはできません - 私は私のテストが素早くなることを望みます、それらはユニットテストです。
質問: コンポーネントに余分なオプションを追加せずにCSSトランジションを無効にする方法はありますか?
私が試したもの: ユニットテスト自体はうまくいきます。 CSSTransitionGroup
を使用しないようにするパラメータをコンポーネントに渡すことで、アニメーションを取り除くことができます。だから最悪のシナリオ - 私はそれだけでやります。しかし、私はより良い解決策を探しています。
"-enter"/"enter-active"/"leave"/"leave-active"クラスは、問題の要素に存在すると主張することもできます。しかし、私はこれらのクラスが適用されるバグを想像することができますが、要素はDOMに残っています。私はこのアプローチに頼らない方がいいです。
コンポーネントをモックすることができます。あなたがJestを使っているなら、['ReactTestUtils.mockComponent'](https://facebook.github.io/react/docs/test-utils.html#mockcomponent)を使うことができます。私は 'CSSTransitionGroup'の機能性を直接テストすることを心配しません。 – Aaron
テストを実行しているときに、反応している部品をパッチする方法はありますか?そこでCSSTransitionGroupを無効にします。 – goldylucks
私は一種のことを最後に@AdamGoldmanでした。あなたはおそらくここで私自身の質問に答えなければならないことを思い出しました。 – kamituel