Да, вы подробно описали правильное и желаемое поведение .
Утверждения Чая, встроенные утверждения Nightwatch или, в основном, любая другая библиотека утверждений, работают так же! Утверждения операторы взлома ( означает, что ваша программа должна завершить выполнение при возникновении ошибки / исключения ), с четкой областью и целью: оценка предиката .Два утверждения всегда будут независимы друг от друга.Таким образом, нет логического случая, когда нужно объединить два или более утверждений, а теперь?
По сути, утверждения не поддерживают функции обратного вызова, поэтому вы не можете передать результат одного в другое ( для них нет встроенной логики ).
Итак, вы не можете этого сделать ...
browser.click('@someElem')
.expect.element('@otherElem').to.be.visible
.expect.element('@otherElem').text.to.equal('I<3Turtles', 'text check');
Вы не можете сделать это ...
browser.click('@someElem')
.expect.element('@otherElem').to.be.visible
.setValue('@otherElem', 'I like turtles');
... и так как мы убрали их с пути, давайте посмотрим, как мы можем реорганизовать эту команду:
commands: [{
checkText: function() {
// Perform wrapper for extra safety!
this.api.perform((done) => {
this.expect.element('@p').text.to.equal( copyP, 'Text is ok');
this.expect.element('@p2').text.to.equal( copyP2, 'Text2 is ok');
done();
});
return this;
}
}]