如何在 Cypress 测试中验证结果是否为 GUID 格式?

How to verify a result is in a GUID format in Cypress test?

在我的 Cypress 测试中,我需要验证值是否为 GUID 格式。

这是返回值的示例:fbb4f73c-0e3b-4fda-ad0a-81a1b8a8c72f

我试过使用下面的 RegEx 断言:

resultString = Regex.Replace(subjectString,
            "(?im)^[{(]?[0-9A-F]{8}[-]?(?:[0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$",
            "'[=10=]'");

        expect(myXhr.response.body.Id).should('contain', /resultString/)

但我收到以下错误消息:

Invalid Chai property: should

您必须使用 .match 将您的值与 RegEx 进行比较。您可以查看 Cypress Assertions 页面以了解 cypress 支持的所有断言。

expect(myXhr.response.body.Id).to.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)

您可能会发现使用 chai-uuid 库更容易。

Cypress 将它添加到构建中,但我认为有一个错误阻止它开箱即用。但是,您可以扩展 chai - 请参阅示例食谱 extending-cypress__chai-assertions 了解完整信息。

最简单的方法是

npm install -D chai-uuid

yarn add -D chai-uuid

然后是测试

chai.use(require('chai-uuid'));

it('validates my uuid', () => {

  expect('fbb4f73c-0e3b-4fda-ad0a-81a1b8a8c72f').to.be.a.guid()
  expect('fbb4f73c-0e3b-4fda-ad0a-81a1b8a8c72f').to.be.a.uuid()
  expect('fbb4f73c-0e3b-4fda-ad0a-81a1b8a8c72f').to.be.a.uuid('v4')

  cy.wrap('fbb4f73c-0e3b-4fda-ad0a-81a1b8a8c72f')
    .should('be.a.guid')                          

  cy.wrap('fbb4f73c-0e3b-4fda-ad0a-81a1b8a8c72f')
    .should('be.a.uuid', 'v4')                       // same as 'be.a.guid'

})