私たちは、phantomjs を使用して angular webapp をテストしています。
コントローラーのコードは次のようになります。
angular.module('module' ['dependency']).
controller('controller',function ($scope, Model) {
// blah-blah-blah
Model.list() // calls $http.get
.then(); // yadda-yadda-yadda
});
バックエンドは Java であるため、アプリ全体をテストするために、Selenium Webdriver と PhantomJS を使用しています。このスニペットを使用して、Angular がディレクティブの処理を終了したかどうかを確認します (分度器のソース コードから取得)。
var app = angular.element(document.querySelector('#ng-app'));
var $browser = app.injector().get('$browser');
$browser.notifyWhenNoOutstandingRequests(function () {
// callback
});
それは正常に動作します - ほとんどの場合、Angular 処理要求を実際に検出できます。
問題は、コントローラーが実行される前でも、コールバックが起動するように見えることがあることです。その動作に気付いたすべてのケースで、それはルートの変更です。alert('');
それを見つけるために、コントローラーのさまざまな部分に挿入しようとしました。
問題は、コントローラー関数が実行された後にのみ、待機中のスニペットを実行するにはどうすればよいですか?