簡體   English   中英

如何在量角器期望運行之前返回承諾?

[英]How do I return a promise before protractor expect runs?

Person.prototype.checkAssignmentIncomplete = Person.chain(function (data) {
var self = this;

var assignmentPane = self.browser.element(by.id(data.testId + '#' + data.deadline));
expect(assignmentPane.isPresent()).toBe(true);

assignmentPane.click();
self.browser.waitForAngular();

var foundName = false;
var promises = [];
element.all(by.binding('member.user.fullname')).each(function (nameColumn) {
    var row = nameColumn.element(by.xpath('..'));
    var promise = nameColumn.getText().then(function (name) {
        foundName = foundName || data.name === name;
        if (foundName) {
            var reviewButton = row.element(by.className('icon'));
            expect(reviewButton.isPresent()).toBe(false);
        }
    });
    promises.push(promise);
});

q.all(promises).then(function () {
    expect(foundName).toBe(true);
});

});

我在Protractor中進行自動化測試時遇到問題,似乎認為foundName為假,並且我知道運行該程序時的確是事實。 我的結論是,期望函數是在諾言完成之前運行的。

我想知道如何在檢查Expect函數中的foundName之前確保諾言已經完成?

    var self = this;

var assignmentPane = self.browser.element(by.id(data.testId + '#' + data.deadline));
expect(assignmentPane.isPresent()).toBe(true);

assignmentPane.click();
self.browser.waitForAngular();

var foundName = false;
element.all(by.binding('member.user.fullname')).each(function (nameColumn) {
    var row = nameColumn.element(by.xpath('..'));
    nameColumn.getText().then(function (name) {
        foundName = foundName || data.name === name;
        if (foundName) {
            var reviewButton = row.element(by.className('icon'));
            expect(reviewButton.isPresent()).toBe(false);
        }
    });
}).then(function () {
    expect(foundName).toBe(true);
});

這並不是一個理想的解決方案,但是在每個函數之后添加promise似乎可以解決我遇到的問題。

解析承諾數組時,嘗試使用protractor.promise.all(promises)函數進行回調-https: //angular.github.io/protractor/#/api?view=promise.all

q lib可能在這里不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM