我想在我的 e2e 测试中使用 angular 的 $q 服务。(我想通过getText()获取一堆元素的文本,它返回一个承诺。在所有承诺都解决后,我想测试列表。所以我想使用$q.all()等)
angular.injector(['myApp']).get('$q');
导致“ReferenceError:未定义角度”
通过节点安装角度,然后var angular = require("angularjs");
导致“错误:找不到模块'角度'”
此外,插入 abrowser.waitForAngular()
也无济于事。
使用inject(function($q) {})
语法有同样的问题。
如何在量角器中使用这样的角度函数?
编辑:
这是我想要实现的非常天真的版本
var collectEntries = function(containers) {
var entries = {};
containers.each(function (container) {
var title = container.element(by.tagName('h2'));
title.getText().then(function (text) {
var key = getSomeKey();
var entry = processEntry(text);
entries[key] = entry;
});
});
return entries;
};
这原则上有效,在某个时间点条目包含所有数据。然而,我需要等待那一刻。我要做的是创建并返回一个承诺,一旦所有getText承诺得到解决,该承诺就会得到解决。
例如
var deferred = $q.defer();
$q.all(getTextPromises).then(function () {
deferred.resolve(entries);
});
return deferred.promise;