【发布时间】:2014-11-07 16:18:12
【问题描述】:
所以我有一个网站,点击一个按钮后,它会发送到一个角度服务,该服务做出承诺,解决它,获取一些数据,并在页面上显示该数据。我想要一个角度测试来找到按钮,单击它,并验证我是否获得了数据。但是,测试总是在按钮解析之前完成。我尝试了 browser.sleep(),但这只是暂停了事情,承诺从未得到解决。这里关于量角器的许多其他与 Promise 相关的问题都没有帮助,因为 Promise 不是在测试中设置的,而是由页面本身设置的。
这是我的测试:
it('should roll a d2', function () {
element(by.id('d2Button')).click();
//whatever has to be here for the waiting to occur
expect(element(by.binding('rolls.d2')).getText()).not.toEqual('0');
});
这是 HTML:
<button id="d2Button" type="button" class="btn btn-success" ng-click="rollD2()">Roll</button>
<span><b>{{rolls.d2 | number}}</b></span>
这里简单总结一下点击时调用的角码:
$scope.rollD2 = function () {
diceService.getD2Roll($scope.quantities.d2).then(function (data) {
$scope.rolls.d2 = data.roll;
});
};
这里是服务调用:
function getD2Roll(quantity) {
var url = "Dice/D2/" + quantity;
return getPromise(url);
}
function getPromise(url) {
var deferred = $q.defer();
$http.get(url).success(deferred.resolve).error(deferred.reject);
return deferred.promise;
}
如何让测试正确等待?
【问题讨论】:
-
您是如何看待使用 Protractor 的 browser.wait() 的? angular.github.io/protractor/#/…
标签: javascript angularjs protractor angular-promise