承诺中的 Jasmine 节点断言未显示

Jasmine-node assertions within promises not shown

除了断言之外,下面的代码都可以正常运行。当测试为 运行 时,Jasmine 报告 0 个断言。我怎样才能使我的主张不超出承诺并得到认可?

it("should open save NTP server modal", function (done) {
    var addModal = driver.findElement(By.className('modal-dialog'));
    driver.wait(until.stalenessOf(addModal), 5000).then(function () {
        return     driver.wait(until.elementIsEnabled(driver.findElement(By.id('saveButton'))), 5000).then(function (element){ 
            return element.click();
        });
    });

    driver.findElement(By.className("modal-body")).then(function (element) {
        return expect(element.isDisplayed()).toBeTruthy();
    });

    done();
});

我知道在这种特定情况下(我最好的示例测试)我可以只捕获元素然后在承诺之外执行期望:

var element = driver.findElement(By.className("modal-body"));
expect(element.isDisplayed()).toBeTruthy();

不幸的是,在其他情况下,我无法确定在承诺之外执行异常的方法。

您必须将 "done" 方法放在最终回调中。

driver.findElement(By.className("modal-body")).then(function (element) {
    expect(element.isDisplayed()).toBeTruthy();
    done();
});

您还可以查看 Chai promises 库,它用于处理异步期望。