如何在Cypress JS测试中将UI上的日期与MySQL数据库中存储的日期进行比较?

9rygscc1  于 2022-10-22  发布在  Mysql
关注(0)|答案(1)|浏览(121)

在我的Cypress测试中,我试图将从MySQL数据库检索到的日期值与UI上显示的日期进行比较。
以下是我的Assert:

cy.transformDate(dateRetrievedFromDB).then(transformedDate => {
    dashboardPage.dateValue().should('have.text', `${transformedDate}`)
})

这是我的transformDate()函数:

Cypress.Commands.add('transformDate', date => {

  const options = {
      year: 'numeric',
      month: 'short',
      day: 'numeric',
  };

  let reformattedDate = new Date(date)

  reformattedDate = reformattedDate.toLocaleString('en-UK', options)
  reformattedDate = reformattedDate.replaceAll(" ", "-")

  return cy.wrap(reformattedDate)

})

然而,我遇到了这样的失败:


小时
请有人告诉我需要做哪些更改,以便我以正确的格式比较日期?

xbp102n0

xbp102n01#

刚刚玩了一下密码,

  • .toLocaleString('en-UK', options)给出“九月”
  • .toLocaleString('en-US', options)给出“九月”

可能有更好的方法进行比较,也许将两者转换为ISO格式YYYY-MM-DD,代码将取决于您从数据库中获得的内容。
我想到了一件事——你想测试页面上显示的日期(如用户所见)实际上是某种格式吗?
在这种情况下,您需要了解页面是如何格式化的,并在cy.transformDate()中重复此操作。
如果您只需要检查页面上的日期在数字上是否与数据库日期相同,而不关心格式,那么尝试将页面文本转换为datetime类型

dashboardPage.dateValue()
  .then(text => new Date(text))
  .should('eq', dateRetrievedFromDB)

或者,如果它们不作为日期进行比较,则将toISOString()应用于这两个值,

dashboardPage.dateValue()
  .then(text => (new Date(text)).toISOString())
  .should('eq', dateRetrievedFromDB.toISOString())

相关问题