使用 Jest 测试 ES6 的类 (class) 和对象 (object)

阅读时长 8 分钟读完

使用 Jest 测试 ES6 的类 (class) 和对象 (object)

随着前端技术的不断进步,ES6 带来了许多新的特性,其中类和对象是其中一个变化最大的特性。在项目中使用 ES6 的类和对象能够让项目更好的结构化,并且提高代码的可读性。但是使用 ES6 的类和对象也会带来一些问题,如何测试?

本文将详细介绍如何使用 Jest 测试 ES6 的类和对象,包括类和对象的基础测试,继承和多态的测试,以及使用 Jest 的 Mock 功能进行测试。

基础测试

首先,我们需要学习如何测试 ES6 的类和对象的基础方法。在测试之前,需要安装 Jest 和 babel-jest。

接下来是一个简单的 Person 类的示例代码,我们将测试它的两个方法:

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

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

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

测试用例代码如下:

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

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

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

在上述示例代码中,我们使用 describe() 函数定义一个测试套件,使用 it() 函数定义一个测试用例。在测试用例中,我们使用 expect() 函数调用特定断言以检查结果是否符合预期。我们还使用 Jest 提供的模拟(console.log = jest.fn()),以确保在调用 sayName() 和 sayAge() 方法时控制台输出了正确的名称和年龄。

在控制台中运行以下命令,我们将看到测试结果:

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

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

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

通过测试的结果告诉我们代码的正确性,这是我们进行下一步开发的根基。

继承和多态的测试

在 ES6 中使用类继承并且实现多态是一个很实用的设计技巧,它们也需要被测试。在这个示例中,我们将创建一个 Animal 类并扩展它到 Dog 和 Cat 类。

首先是 Animal 类:

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

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

接下来是 Dog 和 Cat 类:

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

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

最后,我们将编写测试用例以确保 Dog 和 Cat 类的行为符合预期。

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

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

这里,我们使用 Animal 类测试多态性,并检查它是否输出 "I am an animal."。接下来,我们对 Dog 和 Cat 类使用相同的方法并确保输出符合预期。

使用 Jest 的 Mock 功能进行测试

在实际的项目中,我们经常需要模拟数据和行为。此时就需要使用 Jest 的 Mock 功能进行测试。例如:模拟一个“假”数据。

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

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

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

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

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

在测试中,我们需要 Mock axios 的 get() 方法以返回假数据以确保测试的可行性。

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

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

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

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

这里我们模拟了 axios 的 get() 方法然后提供了模拟数据作为返回值。接下来我们调用 getInfo() 方法并确保返回的名称和年龄与模拟的属性值匹配。

总结

在本文中,我们学习了如何使用 Jest 测试 ES6 的类和对象,包括基础测试,继承和多态的测试,以及使用 Jest 的 Mock 功能进行测试。

对于前端开发者而言,测试代码是在保障软件质量方面的重要手段之一。随着越来越多的前端项目采用 ES6 的类和对象来组织代码,也必须掌握对它们进行有效测试的方法。

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

纠错
反馈