angularjs – 创建和解决量角器中的承诺
我正在写一个测试用例,用于在Angular应用程序的页面中添加商店信息,使用量角器,其中最初计数我已经拥有的商店数量,并且在测试块完成后,我预计计数增加一个,因此我通过遵循创建承诺07??000的链接来做到这一点
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()正在解决承诺,并且正确的存储计数值被打印在testPromise()中,但是当我调用testPromise()时,它将被阻塞,那么方法就不会在那个’then’块 最终结果说 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()中进一步研究了一下,并尝试使用它来创建承诺并解决其价值,但不知道问题是什么。或者我收到错误消息说“预期6为NaN”或“预期6为1”我没有解决承诺或写“然后”正确阻止?在这个问题上,请欣赏一些见解/帮助。
创建
为了在量角器上创造一个承诺,你必须写: var deferred = protractor.promise.defer(); var promise = deferred.promise; 回调 回调被异步调用。 promise.then(function() { ... }); 你也可以注册一个(或多个)“on error”回调: promise.then(null,function() { ... }); 这些注册可以链接: promise.then(function() { ... }).then(function() { ... }).then(null,function() { ... }).then(function() { },function() { ... }).then(onSuccess,onFailure); 解析度 成功 当成功解决承诺时,会调用“成功”回调: deferred.fulfill(value); 失败 当承诺成功解决时,会调用“on failure”回调函数: deferred.reject(new Error('a problem occurs')); 在你的代码 你错过了解决步骤。你必须履行诺言。 Webdriver.js documentation提供了更完整的参考 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |