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

时间:2017-03-10 19:22:07

标签: javascript selenium selenium-webdriver jasmine jasmine-node

以下代码全部正常运行,但断言除外。当测试运行时,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();

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

1 个答案:

答案 0 :(得分:0)

你必须把你的"完成"最终回调中的方法。

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

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