在量角器中创建和解决承诺

德赛

我正在编写一个测试用例,使用Protractor在Angular应用程序的页面中添加商店信息,在这里我最初是在计算已经拥有的商店数量,并且在完成测试块后,我希望该数量增加一,因此通过遵循创建承诺的链接来做到这一点如何在量角器中创建和操纵承诺?

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()时会在其中阻塞。

最终结果说

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”是我没有解决承诺还是没有正确编写“然后”块?希望对这个问题有一些见解/帮助。

t.888

这是一个用于Protractor的用户定义函数的工作示例,该函数创建并实现(或拒绝)promise:

// Get the text of an element and convert to an integer.
// Returns a promise.
function getTextAsInteger(element, radix) {
  // Specify a default radix for the call to parseInt.
  radix = radix || 10;
  // Create a promise to be fulfilled or rejected later.
  var deferred = protractor.promise.defer();
  // Get the text from the element. The call to getText
  // returns a promise.
  element.getText().then(
    function success(text) {
      var num = parseInt(text, radix);
      if (!isNaN(num)) {
        // Successfully converted text to integer.
        deferred.fulfill(num);
      } else {
        // Error converting text to integer.
        deferred.reject('could not parse "$1" into an integer'
          .replace('$1', text));
      }
    },
    function error(reason) {
      // Reject our promise and pass the reason from the getText rejection.
      deferred.reject(reason);
    });

  // Return the promise. This will be resolved or rejected
  // when the above call to getText is resolved.
  return deferred.promise;
}

该函数以element一个参数为参数,并调用其getText()方法,方法本身返回一个promise。成功调用时getText(),将文本解析为整数并兑现承诺。如果getText()拒绝,我们会将原因传递给我们自己的拒绝电话。

要使用此功能,请传递一个元素promise:

var numField = element(by.id('num-field'));
getTextAsInteger(numField).then(
    function success(num) {
        console.log(num);
    }, 
    function error(reason) {
        console.error(reason);
    });

要么:

var numField = element(by.id('num-field'));
expect(getTextAsInteger(numField)).toEqual(jasmine.any(Number));
expect(getTextAsInteger(numField)).toBeGreaterThan(0);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在量角器中创建和操纵承诺?

来自分类Dev

如何在量角器中创建和操纵承诺?

来自分类Dev

在量角器中解决黄瓜承诺

来自分类Dev

量角器在功能内解决承诺

来自分类Dev

量角器承诺

来自分类Dev

简化量角器中的嵌套承诺

来自分类Dev

在量角器中传播承诺

来自分类Dev

量角器承诺不按声明解决

来自分类Dev

量角器承诺不按声明解决

来自分类Dev

在量角器中从地图创建数组

来自分类Dev

在量角器中承诺回调的顺序

来自分类Dev

在量角器中遍历承诺的键/值对

来自分类Dev

如何避免量角器中的深层嵌套承诺

来自分类Dev

带承诺的量角器变量范围

来自分类Dev

量角器:承诺如何运作?

来自分类Dev

茉莉花“期待”如何等待量角器承诺解决

来自分类Dev

量角器:解决承诺时无法读取未定义的属性“then”

来自分类Dev

量角器如何解决诺言?

来自分类Dev

您如何使用量角器向流量控制队列中添加承诺?

来自分类Dev

如何将量角器中的承诺转换为浮点数

来自分类Dev

如何使用量角器页面对象模型设计和Promise创建和返回对象数组

来自分类Dev

如何在量角器期望运行之前返回承诺?

来自分类Dev

量角器返回承诺而不是属性值

来自分类Dev

使量角器投票承诺,直到满足条件

来自分类Dev

承诺延迟对量角器控制台登录的影响

来自分类Dev

如何从量角器的外部函数返回整数作为承诺?

来自分类Dev

量角器:页面对象返回“承诺”而不是文本

来自分类Dev

量角器中的'$'选择器

来自分类Dev

如何解决ElementNotVisibleError:在量角器中不可见的元素