我正在使用Angular 4应用,我们正在使用Cypress进行前端/集成测试。 在我们的一种表单上,我们有一个“取消”按钮,该按钮清除子表单上的所有输入并重置该表单。 我想知道赛普拉斯是否可以通过任何方式检查表单或控件是否原始,还是需要检查输入内容是否全部清除? (我知道该怎么做,但是宁愿能够使用Pristine进行检查,而不需要遍历所有控件。)
这是我目前正在做的事情:
cy.get('[data-test=cancelButton]').click();
cy.get('[data-test=referenceField').should('be.empty');
cy.get('[data-test=referenceField').should('have.attr', 'placeholder', 'Numbered list number');
我想做类似的事情
cy.get('[data-test=cancelButton]').click();
cy.get('[data-test=referenceField').should('be.pristine');
答案 0 :(得分:1)
Cypress允许您创建custom child commands。基本语法如下:
Cypress.Commands.add('shouldBePristine', {
prevSubject: true // this allows it to be chained off another command
}, (subject /*, arg1, arg2, ...*/) => {
// subject is whatever is wrapped by the Cypress object that
// .shouldBePristine() is called on
// In your case, you would do something like this:
expect(subject).to.be.empty;
expect(subject).to.have.attr('placeholder', 'Numbered list number');
// This command does not need to change the subject for the next function
// in the chain, so we will just return what was passed in
return subject;
});
然后您将像这样调用命令:
cy.get('[data-test=referenceField]').shouldBePristine();
您也可以write a custom chai helper,但是该过程看起来要复杂得多。