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
});

它工作正常——在大多数情况下,它确实可以检测角度处理请求。

问题是有时我的回调似乎在控制器执行之前就触发了。在我注意到这种行为的所有情况下,这都是路线变化。我尝试插入alert('');控制器的不同部分以找出答案。

所以,问题是 - 我如何才能在控制器功能执行后才执行我的等待片段?

4

1 回答 1

2

根据 GitHub 讨论,您提到的问题特定于 PhantomJS。其他环境似乎还不错。

警告:我不使用 Phantom,而且这个演讲已经 1 年了(截至 2014 年 12 月)——所以这可能不再是一个问题。

于 2014-12-22T14:34:36.970 回答