2016-11-15 15 views
1

I持ってcomponentDidMount()内のすべてのコンポーネントの高さに一致するようにjQueryのセレクタを使用して反応させ、コンポーネント:WebPACKのようなサーバを実行しているときにjQueryを使用するReactコンポーネントでテストを実行するにはどうすればよいですか?

$('.js-matchHeight').matchHeight(); 

が正常に動作しますが、私は私のスペック(モカとチャイを書くとき)、それは文句を言う:

ReferenceError: $ is not defined

私のテストにjQueryを追加するにはどうすればよいですか?

答えて

1

ブラウザのenvをテストに追加しましたか?

import browserEnv from 'browser-env'; 
browserEnv(); 

私はAVAで行われた単体テストで同様の問題を抱えていたと私は考えています。わかりませんが、jQueryやCheerioもインポートしたと思います。

EDIT:

まあ私が持っている回避策は次のようにあなたのコンポーネントにjQueryのに対してテストすることです:

if (typeof jQuery !== 'undefined') { 
    $('.js-matchHeight').matchHeight(); 
} 

またはあなたはあなたが別のコンポーネントをエクスポートすることができますインポートモジュールでのjQueryを使用している場合バージョン:

module.exports = (typeof jQuery !== 'undefined') 
    ? browser(jQuery) 
    : nonBrowser(); 

これは完全ではありませんが、完璧にしたい場合は、jQueryをj私は思うsx:

+0

ありがとう@marcinrek!私は試しましたが、動かなかったのです。私は、browserEnvがjQueryを追加しないと思います。また、jQueryをtest.jsxにインポートすることはできません。なぜなら、テスト対象のコンポーネントにはテストではなくjQueryが必要なためです。 –

+0

browserEnvはjQueryを追加しませんが、追加する必要があります。私はバンドルにjQueryを入れていないと仮定しているため、これは未定義です。 browserEnvを使わずにコンポーネントに追加すると、jQueryの必要なウィンドウ、ドキュメントなどとはうまく動作しません。そのため、追加するよう提案しました。私はそれが働いていることを知っているが、私は家からそのレポにアクセスする必要はありませんので、明日まで誰も答えない場合は、もう一度見てください:) – marcinrek

+1

jQueryによって行われた何かに対してテストしていない場合は、 if(typeof(jQuery)!== 'undefined'){$( '。js-matchHeight')。matchHeight(); } – marcinrek

関連する問題