Mock Functions 在 Jest 中是一种非常常用的工具,通过创建虚假函数来模拟一些不易于测试的复杂方法;在测试我们的代码的时候,我们可以检查函数的调用次数,参数和返回值。Mock Function 还能够捕获函数被调用时的上下文,并提供一些另外的方法以方便我们进行单元测试。
在这篇文章中,我们将讨论 Jest 中的 Mock Function 在 ES6 class 中的运用方法。ES6 class 是一个比较新的 JavaScript 特性,通常会和 Mock Function 一起使用以进行更加高级的单元测试。
什么是 ES6 Class ?
ES6 class 是一种新的 JavaScript 类型,可以让开发人员更加方便地组织代码并创建类。ES6 class 提供了一种机制使得继承和代码结构更加清晰,并且可以更容易地模块化。
在 ES6 class 中,我们可以通过定义一个 constructor
方法来创建一个类。这个 constructor
方法会在类实例化的时候被调用。在 constructor
中,我们可以设定类的默认属性和方法。由于 ES6 class 支持继承,子类可以通过 super()
方法来调用父类的构造函数。
-- -------------------- ---- ------- ----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - ---------- - ------------------- -- ---- -- ------------ --- - -- ----------- ----- ------- - - ----- -------- ------- ------ - ----------------- ---- --------- - ----------- ----- ------------- - --------- - ---------- - ------------------- -- ---- -- ------------- - -- ----------- ----- ---- --- - ---- -- - -------------------- - - ----- ---- - --- ------------ ----- ---- ---------------- ----- ----- - --- --------------- ------- --- --------- ------------ -----------------
在这个例子中,我们定义了一个 Person
类和一个 Employee
类。Employee
类继承了 Person
类,并覆盖了 sayHello()
方法。我们还创建了 john
和 sarah
两个类实例,并调用了它们的 sayHello()
方法。
在 Jest 中 Mock ES6 Class
Mock ES6 Class 在 Jest 中并不特别困难,只是需要注意一些细节。在接下来的例子中我们将演示在 Jest 中如何 Mock ES6 Class。
我们将使用一个简单的计算器程序作为例子来介绍 Mock ES6 Class。在这个程序中,我们将使用 ES6 class 来定义 calculator 对象,并且在其中定义了一个计算 add
方法。
-- -------------------- ---- ------- ----- ---------- - ------------- - ------------ - -- - --- -------- - ------ ------------- - -------- - ------------ -- ---- - - -------------- - -----------
在测试用例中,我们将 Mock 掉 add
方法,并且在一个测试用例中验证它的实际行为。
-- -------------------- ---- ------- ----- ---------- - ------------------------ ---------------------- -- -- - --------------- -- -- - ---------- --- --- ------- ---------- -- -- - ----- ---------- - --- ------------- ----- ------- - ---------- -------------- - -------- ------------------ ------------------ ------------------------------------------ ----------------------------------------- ----------------------------------------- ---------------------------------- --- --- ---
在这个测试用例中,我们创建了一个 Calculator
对象并与一个 Mock 函数一起实例化。在这个测试用例中,我们 Mock 掉了 calculator.add
方法,并且在这个方法被调用的时候记录它的参数信息。最后,我们还验证了实际使用的 calculator
对象中的 result
是否是正确的。
结论
在该文章中,我们介绍了如何在 Jest 中 Mock ES6 Class。Mock Function 提供了一种非常有用的工具通过 Mock 一些不容易测试的函数以进行单元测试。在 ES6 class 中使用 Mock Function 能够让我们更加方便地测试一些高级特性以提高代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66fc9b5b447136260170900c