Jest 测试如何处理混合答案 String 和 int 预期

Jest Test how to handle when a mixed answer String and int is expected

我正在 运行 测试创建后为客户生成 ID(随机数)的应用程序,因为该数字是随机的,我如何确保创建的数字有 10 位数字?

这是代码

 describe('POST/accounts/', () => {

  var resquestBody = {"name:" "Paul", "age":23, "profession":"teacher"}
  
  it ('test member creation', async () => {
   const req = await  request
   .post('/accounts')
   .send(requestBody')
   .expect(200)
  expect(req.body).toEqual('')
  })
})

应用程序生成的答案是 10 个数字长度。 类似于:

     {ID: 2123212321}

我的疑问是如何确保生成的号码有 10 位数字并且与 ID 相关。

我试过了

     expect(res.body)toHaveProperty('ID')

但是对于这个 sintaxe 我只能测试它有 ID 而不是数字本身。

有什么建议吗?

你可以这样试试

let id = res.body.id + ''; //convert to string if number expect(id.length).toEqual(10); // validate string length

或者您也可以使用 ID 的正则表达式并使用 toEqual 方法验证格式是否正确。

在你的帮助下,我解决了我的问题:

  describe('POST/accounts/', () => {

  var resquestBody = {"name:" "Paul", "age":23, "profession":"teacher"}


 it ('test member creation', async () => {
 const req = await  request
 .post('/accounts')
 .send(requestBody')
 .expect(200)
 expect(req.body).toHaveProperty('ID')
 expect(req.body.id).toBeGreaterThanOrEqual(1000000000);
 expect(req.body.id).toBeLessThan(9999999999);
})
})

再次感谢您的帮助!