Jest 中使用 expect.objectContaining 方法全面评估 object 对象

阅读时长 4 分钟读完

Jest 是一款流行的前端测试框架,可以让开发者轻松进行单元测试和集成测试。在 Jest 中,我们可以使用 expect API 来断言测试结果是否符合预期。其中,expect.objectContaining 方法提供了一种评估对象(object)属性的快捷方式。

什么是 expect.objectContaining?

expect.objectContaining 接收一个对象作为参数,并返回一个 Matcher 对象,它用于确保被测试对象中包含该对象的所有属性。例如:

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

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

在上面的示例中,expect.objectContaining 方法断言 user 对象包含 nameage 属性,并且这些属性具有特定值。因此,上述代码的测试将通过,因为 user 中确实包含该对象的所有属性和值。

除了 expect.toEqualMatcher,还可以与其他 Matcher(如 expect.toBeTruthy()、expect.toBeFalsy() 等)一起使用 objectContaining。例如:

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

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

上面的代码使用了多个 Matcher 来测量对象 user 中包含的属性。其中,expect.any() 表示确定一个值为特定类型,例如字符串(String);expect.stringMatching() 表示测试一个字符串是否匹配正则表达式;expect.stringContaining() 表示测试字符串是否包含某个子字符串。

为什么使用 expect.objectContaining?

expect.objectContaining 提供了一种简便方法来确保被测试对象中包含一组指定的属性。在测试具有大量属性或嵌套属性的对象时,它特别有用。使用 objectContaining,我们可以轻松地编写有效的测试代码,在尽可能短的时间内获取大量信息。

此外,与其他 Matcher 结合使用 expect.objectContaining 可以提高测试的可读性和可维护性,同时减少冗余代码。

总结

在 Jest 中使用 expect.objectContaining 方法进行对象属性评估可以极大地简化我们的测试工作,并且使测试代码更加清晰易懂。除了可以直接对属性进行断言之外,还可以与多个其他 Matcher 一起使用来评估属性类型、值,等等。希望这篇文章能够让你更好地利用 Jest 做出更高效和可维护的前端测试!

示例代码:

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

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

纠错
反馈