赛普拉斯测试 - 期望日期格式

Cypress Testing - Expect a date format

我正在为我的 rest 调用创建 Cypress 测试 API。无论如何,我需要验证日期格式,例如,在我的 JSON 响应中我有:

“文档日期”:“2022-01-28”

因此,我需要验证日期格式而不是它的值。赛普拉斯“期望”有一种方法可以验证这一点吗? Idk,也许是这样的:

expect(documentDate)to.have.format('yyyy-MM-dd');

如果有人能帮助我,那就太好了。

谢谢。

您可以为此使用正则表达式。您可以使用下面的正则表达式,它取自 Whosebug thread.

/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/

在你的测试中你可以使用:

expect(documentDate).to.match(/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/)

您应该使用正则表达式来匹配您的日期格式。

\d 是用于匹配任何数字字符 (0-9)

的正则表达式

{} 是前面标记的量词

expect(documentDate).to.match(/\d{4}-\d{2}-\d{2}/)

另一种方法是使用 dayjs 库。

正则表达式的问题是它只检查字符,不检查日期有效性

import dayjs from 'dayjs'

it('checks date string is a valid date', () => {

  const documentDate = "2022-02-29"    // not valid but passes with regex

  const parsed = dayjs(documentDate, 'YYYY-MM-DD')

  // fails with error "expected 2022-03-01 to equal 2022-02-29"
  expect(parsed.format('YYYY-MM-DD')).to.eq(documentDate)  
})