コントローラーを使用する 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 ジェネレーターを使用しています) に追加しました。