我正在写一个测试用例,用于在Angular应用程序的页面中添加商店信息,使用量角器,其中最初计数我已经拥有的商店数量,并且在测试块完成后,我预计计数增加一个,因此我通过遵循创建承诺07000的链接来做到这一点
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);
失败
deferred.reject(new Error('a problem occurs'));
在你的代码
你错过了解决步骤。你必须履行诺言。
Webdriver.js documentation提供了更完整的参考