量角器同步与异步

时间:2017-06-16 22:52:38

标签: angular protractor automated-tests

我了解茉莉/量角器可以使用then等待某些操作的结果。我也理解Control流程是如何工作的。

我的问题是,如果我必须使用then,那么所有后续操作都需要在then中进行链接吗?或者量角器会照顾同步性吗?

我正在使用页面模型:

SomePage.prototype = Object.create({}, {
    list: { get: () => {return element.all(by.repeater("item in $ctrl.list"))}}
});

somePage.list.then((listItems) => {
    expect(list.length).toBe(1);
    element(by.css(".item-name")).getText().then((itemName) => {
        expect(itemName).toBe("test item");
    });
})

进一步测试,我这样做:

somePage.list.then((listItems) => { 
    ... 
})
.then(() => {
    ... more testing
});

或者我只是继续,就像同步一样?

跟进问题: 当使用Page模型时,如果页面函数触发了触发应用程序中http调用的click事件,那么他们应该return element(by.css('some-button-that-triggers-a-http')).click()还是只执行点击?

1 个答案:

答案 0 :(得分:0)

是否取决于您是否需要在then中调用其他异步操作。如果是这样,则可以链接then。如果没有,您将在“ then”语句中继续执行同步代码。

您有错字-请确保您拨打电话清单,如:

somePage.list().then((listItems) => { 
    ... 
})

最后,请确保您在done()语句中调用then,以便茉莉花知道测试已完成运行。 (或仅使用es6 + async / await