1

コントローラーを使用する Angular ディレクティブがある場合、次のようにして、テストでディレクティブのスコープにアクセスできました。

element = angular.element('<my-directive></my-directive>');
element = $compile(element)($rootScope);
$rootScope.$digest();

scope = element.scope();

これにより、スコープのプロパティを設定/取得し、ディレクティブのコントローラーによって定義された関数を直接呼び出すことができます。

ただし、プロジェクトにjQueryを導入するとすぐに(使用したい別の依存関係によって必要になります)、これは機能しなくなりました。具体的には、テストelement.scope()で返されundefinedます。開発ツールを使用すると、アプリが実際に実行されている場合はそうではないことがわかります。つまり、非値を実行$('.blah').scope()して戻すことができます。undefined

なぜこれがうまくいかないのか、誰にも分かりませんか?HTML ファイルに含まれているのと同じ順序でjQuery をkarma.conf.js (私は Yeoman Angular ジェネレーターを使用しています) に追加しました。

4

1 に答える 1

1

問題が見つかりました。私は PhantomJS でテストを実行しており、jQuery 2.0.3 をプルしていました。jQuery 1.10.2 にダウングレードすると、すべてが再び機能するようになりました。PhantomJS に互換性の問題があることに少し驚いていますが、それが問題だったようです。

于 2013-09-06T08:28:16.200 に答える