在我的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)
})
然而,我遇到了这样的失败:
小时
请有人告诉我需要做哪些更改,以便我以正确的格式比较日期?
1条答案
按热度按时间xbp102n01#
刚刚玩了一下密码,
.toLocaleString('en-UK', options)
给出“九月”.toLocaleString('en-US', options)
给出“九月”可能有更好的方法进行比较,也许将两者转换为ISO格式YYYY-MM-DD,代码将取决于您从数据库中获得的内容。
我想到了一件事——你想测试页面上显示的日期(如用户所见)实际上是某种格式吗?
在这种情况下,您需要了解页面是如何格式化的,并在
cy.transformDate()
中重复此操作。如果您只需要检查页面上的日期在数字上是否与数据库日期相同,而不关心格式,那么尝试将页面文本转换为datetime类型
或者,如果它们不作为日期进行比较,则将toISOString()应用于这两个值,