Jest + Supertest 中如何断言 response 中含有某个值

阅读时长 4 分钟读完

前端自动化测试是前端开发中至关重要的一部分,而 Jest 和 Supertest 是其中两个最为流行的工具,它们可以让测试变得更加简单、准确和可靠。

在使用 Jest 和 Supertest 进行前端测试时,经常需要断言 response 中是否包含了某个特定的值。接下来,让我们来学习一下如何使用 Jest 和 Supertest 进行 response 断言。

开始使用 Jest 和 Supertest 进行 response 断言

首先,我们需要安装 Jest 和 Supertest。我们可以在 package.json 文件中添加以下代码:

然后,我们可以使用以下代码来创建测试文件:

-- -------------------- ---- -------
-- ------------
----- ------- - ---------------------
----- --- - ------------------

------------- -------- -- -- -
  ------------ ------ - ---- -- ------- -- -- -
    ------ ------------
      --------------
      ------------
      ---------------- -- -
        ----------------------------------------------
      ---
  ---
---

在上面的代码中,我们使用了 Jest 和 Supertest,测试了我们的 /users 路由是否返回了一个用户列表。

具体来说,我们使用了 request(app) 发送了一个 GET 请求到 /users 路由,然后使用 expect(200) 检查响应是否返回了一个 200 状态码。接着,我们使用 .then() 来访问响应体,并使用 expect(response.body).toHaveProperty('users') 断言 response.body 中是否包含了一个名叫 users 的属性。

深入理解 Jest 和 Supertest

以上代码提供了一个相对简单的测试用例,但我们可以通过扩展这个用例来深入理解 Jest 和 Supertest。

  • 断言 response 中的多个属性

当我们需要断言 response 中的多个属性时,我们可以使用 expect(response.body).toMatchObject({ ... }),它会检查 response.body 是否包含了一个对象,该对象至少包含传入的属性,并忽略其他属性。

  • 自定义断言

当我们需要自定义断言时,我们可以使用 expect.extend() API。例如,以下代码创建了一个自定义的 toHaveUser() 断言,用于检查 response.body 是否包含一个特定的用户。

-- -------------------- ---- -------
-- ------------
----- ------- - ---------------------
----- --- - ------------------

---------------
  -------------------- ----- -
    ----- ---- - ----------------- -- ---- --- ---------
    -- ------ -
      ------ -
        -------- -- -- --------- ----------- --- -- ------- ---- ------------
        ----- -----
      --
    - ---- -
      ------ -
        -------- -- -- --------- ----------- -- ------- ---- ------------
        ----- ------
      --
    -
  --
---

------------- -------- -- -- -
  ------------ ------ - ---- -- ------- -- -- -
    ------ ------------
      --------------
      ------------
      ---------------- -- -
        ---------------------------------- --- -- ----- ------ ---
      ---
  ---
---

在上面的代码中,我们首先使用 expect.extend() 创建了 toHaveUser() 断言。然后,在测试中,我们使用了该断言来检查 response.body 是否包含了一个 id 为 1、name 为 John 的用户。

结论

使用 Jest 和 Supertest 进行前端自动化测试可以大大提高代码质量和项目可靠性。在本篇文章中,我们介绍了如何使用 Jest 和 Supertest 进行 response 断言,并深入了解了 Jest 和 Supertest 的相关知识。

希望这篇文章对您有所帮助,能够让您更轻松地进行前端自动化测试。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f4c1cbc5c563ced564945a

纠错
反馈