代码之家  ›  专栏  ›  技术社区  ›  Fredrik

Pro拖拉机承诺返回字符串以与值进行比较

  •  2
  • Fredrik  · 技术社区  · 8 年前

    我正在使用量角器测试AngularJS网站。我需要一些量角器函数来返回一个承诺值,以正确的方式继续我的代码。

    特别是,我需要从输入中获取值,并将其与某个常量进行比较。尝试了这种方式:

        var p1 = new Promise(function (resolve, reject) {
    
            if (element(by.id('policyNumber')).getAttribute('value') == parameter.getJinyDotazParams().attributes.policyNumber) {
                resolve("Success");
            } else {
                reject("Error");
            }
        });
    
        p1.then(function (value) {
            console.log(value + 'yaaay'); // Success!
        }, function (reason) {
            console.log(reason + 'Q_Q'); // Error!
        });
    

    例如,使用boolean return,一切正常:

        var p1 = new Promise(function (resolve, reject) {
    
            if (element(by.id('policyNumber')).isDisplayed()) {
                resolve("Success");
            } else {
                reject("Error");
            }
    
            //resolve("Success!");
            // or
            //reject("Error!");
        });
    
        p1.then(function (value) {
            console.log(value + 'yaaay'); // Success!
        }, function (reason) {
            console.log(reason + 'Q_Q'); // Error!
        });
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Sudharsan Selvaraj    8 年前

    如果您使用的是Jasmine框架,那么可以使用expect()方法验证承诺的输出。例如

    var displayedValue =element(by.id('policyNumber')).getAttribute('value')
    var actualValue = parameter.getJinyDotazParams().attributes.policyNumber
    expect(displayedValue).toEqual(actualValue)
    
        2
  •  1
  •   Bergi    8 年前

    没想到,那会这么容易。。

    element(by.id('policyNumber')).getAttribute('value').then(function (val) {
        if (val == parameter.getJinyDotazParams().attributes.policyNumber) {
            console.log('YAAAAY!');
        }
    })