当promise.then中的expect失败时,Protractor / cucumber测试套件停止运行

Protractor / cucumber test suite stop running when expect fails in promise.then

本文关键字:测试 cucumber 套件 运行 Protractor then promise 中的 expect 失败      更新时间:2023-09-26

我正在研究一个使用Protractor(v 0.24.1), Cucumber(v 0.4.0), Chai(v 1.9.1)和Chai-as-promise (v 4.1.1)的测试框架。

Selinium-server-standalone.jar (v 2.41.0)chromedriver (2.10 v)

在这一步中,我以两种不同的方式验证计数。一种是承诺的方式,另一种是使用chai-as-promise库来验证计数。

element.all(by.css('[ticket-id]')).then(function (tickets) {
    expect(tickets.length).to.equal(2, "length correct");
    //expect(tickets.length).to.equal(3, "length wrong");
});
expect(element.all(by.css('[ticket-id]')).count()).to.eventually.to.equal(2).and.notify(next);

这个通过了,我得到了消息:

1 scenario (1 passed)
3 steps (3 passed)
Process finished with exit code 0

现在,当我将then中的expect更改为fail时,所有内容都将终止。

element.all(by.css('[ticket-id]')).then(function (tickets) {
    //expect(tickets.length).to.equal(2, "length correct");
    expect(tickets.length).to.equal(3, "length wrong");
});

现在我只得到消息:

Process finished with exit code 1

此错误停止测试执行,没有堆栈跟踪或任何帮助调试的东西。有人知道这是为什么吗?

我们正在考虑更新量角器,这可能会有所帮助。

下面的解决方案解决了您的问题:

element.all(by.css('[ticket-id]')).then(function (tickets) {
    expect(tickets.length).to.equal(2, "length correct");
    //expect(tickets.length).to.equal(3, "length wrong");
}).catch(function(err){
    callback(err);
});
expect(element.all(by.css('[ticketid]')).count()).to.eventually.to.equal(2).and.notify(next);