量角器同步与异步

问题描述 投票:1回答:1

我了解茉莉/量角器你可以使用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
});

或者我只是继续,如同步?

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

angular protractor automated-tests
1个回答
0
投票

如果取决于您是否需要在then中调用其他异步操作。如果是这样,你可以链接当时的。如果没有,您将继续使用'then'语句中的同步代码。

你有一个拼写错误 - 确保你打电话给列表,如:

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

最后,确保在done()语句中调用then,以便jasmine知道测试已经完成运行。 (或者只使用es6 + async / await

© www.soinside.com 2019 - 2024. All rights reserved.