5

jquery と bootstrap コンポーネントを利用するいくつかのディレクティブを含む angularjs アプリがあります。したがって、ディレクティブをテストするために、karma.unit.conf.js で次の順序でファイルを定義しました。

files = [

 JASMINE,
 JASMINE_ADAPTER,

 'app/components/jquery/jquery.js',
 'app/scripts/vendor/bootstrap.js',

 'app/components/angular/angular.js',
 'app/components/angular-mocks/angular-mocks.js',
 'app/components/angular-ui/build/angular-ui.js',

 'app/scripts/app.js',

 'app/scripts/**/*.js',

 'test/spec/unit/**/*.js'

];

最初に angularjs と angular-mocks をロードし、次に jquery と bootstrap をロードすると、angular が独自の jQLite を使用するため、テストが実行されて失敗します。しかし、ここで書いたように順序を変更すると、次のようになります。

編集:

例外の原因は jQuery ではなく、bootstrap.js であることがわかりました。bootstrap.js の行にコメントを付けると、テストが実行されます (そして、ブートストラップ コンポーネントがロードされていないため、期待どおりに失敗します)。上記のように(またはテスト前に他の場所で)ブートストラップをロードすると、次のようになります。

PhantomJS 1.8 (Linux) Directive: tkModal should make hidden element visible FAILED[39m
    at /home/ir/work/campari/app/components/jquery/jquery.js:1763
    at /home/ir/work/campari/app/components/jquery/jquery.js:2833
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
     ...
     at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:3656
    at /home/ir/work/campari/app/components/jquery/jquery.js:648
    at /home/ir/work/campari/app/components/jquery/jquery.js:270
    at /home/ir/work/campari/app/components/jquery/jquery.js:3657
    at /home/ir/work/campari/app/components/jquery/jquery.js:3664
    at /home/ir/work/campari/app/components/angular-mocks/angular-mocks.js:1589
    at /home/ir/work/campari/app/components/angular-mocks/angular-mocks.js:1627

この行at /home/ir/work/campari/app/components/jquery/jquery.js:2850は、テストが失敗するまで約 15,000 回無限に繰り返されます (jQuery が jquery.js:1763 で internalData 関数を実行しようとしたときに発生しているようです)。

任意のアイデアをいただければ幸いです

編集:解決済み

答えが見つかりました。これはバージョン 2.3.0 のブートストラップの問題であり、2.3.1 に更新すると解決しました。https://github.com/twitter/bootstrap/issues/6835を参照してください

4

1 に答える 1

1

答えが見つかりました。これはバージョン 2.3.0 のブートストラップの問題であり、2.3.1 に更新すると解決しました。https://github.com/twitter/bootstrap/issues/6835を参照してください

于 2014-04-09T16:27:27.583 に答える