尝试在 Cypress 中断言具有空格的日期格式

问题描述 投票:0回答:1

我正在尝试在 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$/);
javascript angular angularjs regex cypress
1个回答
0
投票

第一个明显的错误是您正在测试整个元素,而不是文本。

使用

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)
© www.soinside.com 2019 - 2024. All rights reserved.