在记录为错误之前,Jasmine / Protractor等待断言正确

时间:2018-02-20 23:05:52

标签: typescript jasmine protractor karma-jasmine e2e-testing

我使用Protractors ExpectedConditions来阻止我的e2e测试的早期断言。我正在寻找一种更简单的方法:

it('should wait for an element to be visible before assertion', () => {
    const myElem = element(by.className('myElem'));

    browser.get('/myComponent');
    browser.wait(ExpectedConditions.presenceOf(myElem), 5000);
    expect(myElem.isPresent()).toBeTruthy();
});

我想要的是一个结合我最后两行的断言,因为它们基本上做同样的事情(有点......不是真的......但有点)。

这样做感觉很糟糕。

我想要的东西会是这样的:

    expect(myElem.isPresent()).wait(5000).toBeTruthy();

就像browser.wait一样,如果条件变得真实,它应该等待或提前返回。

有没有人知道如何实现这个或类似的简单解决方案?

PS: 为了我的目的,browser.waitForAngular()结果是不可靠的。而且(另外)仍然是太多的代码。

我正在考虑按照here解释添加茉莉花匹配器,但是匹配器无法处理这个要求恕我直言。

1 个答案:

答案 0 :(得分:0)

通过查看代码,您似乎没有考虑javascript的异步性质。我会要求你尝试下面的代码。这对你有用。

it('should wait for an element to be visible before assertion', () => {
        const myElem = element(by.className('myElem'));

        browser.get('/myComponent').then(()=> {
        return browser.wait(ExpectedConditions.presenceOf(myElem), 5000);
}).then(()=> {
        expect(myElem.isPresent()).toBeTruthy();
});
    });