gpt4 book ai didi

angularjs - 在 Protractor 中创建和解决 promise

转载 作者:行者123 更新时间:2023-12-02 19:40:59 25 4
gpt4 key购买 nike

我正在编写一个测试用例,用于使用 Protractor 在 Angular 应用程序的页面中添加商店信息,最初我正在计算已经拥有的商店数量,在测试 block 完成后,我预计计数会增加 1,所以为此,我通过创建 promise How to create and manipulate promises in Protractor? 这个链接来做到这一点

describe('myApp', function() {
var items,startCount;

var testPromise = function(){
items = element.all(by.repeater('store in storelist'));
var deferred = protractor.promise.defer();
items.count().then(function(orgCount){
startCount = orgCount;
console.log('Start Count: '+ startCount); //prints correct value e.g, 6
}, function(error){
console.log(error);
});
return deferred.promise;
};

it('should accept valid data for adding new store', function() {
var cNum = null;
testPromise().then(function(result){
cNum = result;
console.log('cNUm value: '+ cNum); //this value doesn't get printed in console
});
/* Code for adding test fields in store page */

expect(items.count()).toBe(cNum+1);
});
});

我希望测试结束时商店数量相同。 count() 正在解析一个 Promise,并且存储计数的正确值会在 testPromise() 中打印,但是当我调用 testPromise().then 方法时,它永远不会进入该“then” block

最终结果是

Message:
Expected 6 to be 1.
Stacktrace:
Error: Failed expectation

我还通过此链接 http://selenium.googlecode.com/git/docs/api/javascript/class_webdriver_promise_Promise.html 对 webdriver.promise.Promise() 进行了更多研究。并尝试使用它来创建 promise 并解决其值(value),但不确定问题是什么。我要么收到错误消息,说“预期 6 为 NaN”或“预期 6 为 1”,我是否没有正确解决 Promise 或编写“then” block ?希望获得有关此问题的一些见解/帮助。

最佳答案

创建

要在 Protractor 中创建 Promise,您必须编写:

var deferred = protractor.promise.defer();
var promise = deferred.promise;
<小时/>

回调

回调是异步调用的。您可以注册一个(或多个)“成功时”回调:

promise.then(function() {
...
});

您还可以注册一个(或多个)“错误时”回调:

promise.then(null, function() {
...
});

这些注册可以链接起来:

promise.then(function() {
...
}).then(function() {
...
}).then(null, function() {
...
}).then(function() {

}, function() {
...
}).then(onSuccess, onFailure);
<小时/>

分辨率

成功

当 promise 成功解决时,将调用“成功时”回调:

deferred.fulfill(value);

失败

当 promise 成功解决时,将调用“失败时”回调:

deferred.reject(new Error('a problem occurs'));
<小时/>

在您的代码中

您错过了解决步骤。你必须履行 promise 。

更完整的引用可在 Webdriver.js documentation 中找到。

关于angularjs - 在 Protractor 中创建和解决 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com