我正在尝试在 Cypress 测试中编写一个断言,检查日期格式是否为 mm/dd/yyyy。
现在,断言失败了,我认为这是因为日期的开始和结束处有空格,如下所示。为了从 html 中提取值,我使用了别名。 当我对日期进行硬编码并使用 contain 而不是 match 时,它会通过,但是当我使用正则表达式并使用 match 时,它会失败。有人能告诉我可能出了什么问题吗?编写断言时如何处理空格?
我正在使用 Cypress 在 Angular 构建的 Web 应用程序上对此进行测试。
HTML
<mat-cell class="mat-mdc-cell mdc-data-table__cell cdk-cell cdk-column-Test-Date mat-column-Test-Date ng-star-inserted" role="cell"> 10/10/2024 </mat-cell>
赛普拉斯测试
cy.get("cdk-column-Test-Date").as("testDate");
cy.get("@testDate").should("match", /^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$/);
第一个明显的错误是您正在测试整个元素,而不是文本。
使用
invoke('text')
测试元素的文本。
const date_regex = '/(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d/';
cy.get("cdk-column-Test-Date")
.invoke('text')
.should('match,' date-regex)
第二件事 - 为什么你认为别名会去除空格?事实并非如此,您应该添加
trim()
方法。忘记别名。
cy.get("cdk-column-Test-Date")
.invoke('text')
.then(text => text.trim())
.should('match', date-regex)