【问题标题】:With Protractor, how can I return a boolean from a function使用量角器,如何从函数返回布尔值
【发布时间】:2016-04-02 14:55:10
【问题描述】:

我有一个从页面对象调用 2 个函数的测试。当第一个函数的期望成功时,我希望第二个函数正常执行。否则,我希望中止执行第二个函数。

这是我对 2 个函数的测试。

it('Should do something.', function () {
    page.expectModalBoldTextOf(('Expected Text'));
    page.clickButton('Yes');
});

这是我想要返回布尔值的函数。

public expectModalBoldTextOf(boldedText: string) : boolean {
    element.all(by.className('modal-body')).filter(function (elm) {
        return elm.isDisplayed().then(function (displayed) {
            return displayed;
        });
    }).then(function (modalBodyArray) {
        if (modalBodyArray.length === 0) { // force a descriptive failure.
            expect('Modal dialog').toBe('displayed on the page');
            return false;
        }
        else {
            modalBodyArray[0].element(by.tagName('strong')).getText().then(function (strongText) {
                expect(strongText.toUpperCase()).toBe(boldedText.toUpperCase());
                return true;
            });
        }
    });
}

现在,上面呈现以下量角器错误。

声明类型既不是“void”也不是“any”的函数必须返回一个值或由单个“throw”语句组成。

如果我将返回类型从“boolean”更改为“any”,则此函数按需要工作(当我删除 return 语句时),但它不会返回任何指示它成功或失败的指示符,以便我可以防止正在执行的 clickButton 函数。

我知道只有在调用成功时才能在 expectModalBoldTextOf() 函数中调用 clickButton() 函数。但我宁愿返回一个布尔值来表示成功或失败,因为这会使它在我们的应用程序中更通用。

【问题讨论】:

    标签: angularjs protractor


    【解决方案1】:

    expectModalBoldTextOf() 返回一个承诺,该承诺将被 Control Flow 解析为布尔值。将any 返回类型并在您的测试中显式解析函数结果:

    page.expectModalBoldTextOf('Expected Text').then(function (succeed) {
        if (succeed) {
            page.clickButton('Yes');
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2020-06-30
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 2017-06-07
      • 2011-07-22
      • 1970-01-01
      相关资源
      最近更新 更多