Я пишу тестовый пример для добавления информации о магазине на странице для приложения Angular с помощью Protractor, где изначально я подсчитываю количество магазинов, которые у меня уже есть, и после завершения тестового блока. Я ожидаю, что счет увеличится на один для этого, я делаю это, следуя этой ссылке создания promises Как создать и управлять promises в 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() разрешает обещание, и правильное значение счетчика хранилища печатается в testPromise(), но в нем блокируется, когда я вызываю testPromise(), а затем метод никогда не переходит в этот блок "then"
и конечный результат говорит
Message:
Expected 6 to be 1.
Stacktrace:
Error: Failed expectation
Я также изучил немного больше в webdriver.promise.Promise() из этой ссылки http://selenium.googlecode.com/git/docs/api/javascript/class_webdriver_promise_Promise.html и попытался использовать это для создания обещать и разрешать свою ценность, но не уверен, в чем проблема. Либо я получаю сообщение об ошибке: "Ожидается, что 6 - NaN" или "Ожидается, что 6 будет 1". Разве я не разрешаю обещание или не записываю "затем" правильно? Поблагодарили бы за понимание/помощь по этой проблеме.