5

私たちは、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('');それを見つけるために、コントローラーのさまざまな部分に挿入しようとしました。

問題は、コントローラー関数が実行された後にのみ、待機中のスニペットを実行するにはどうすればよいですか?

4

1 に答える 1