在前端开发中,测试是非常重要的一环。而在测试过程中,我们经常需要 mock 掉一些依赖项,以便更好地进行测试。在 Jest 中,mock 一个函数或者对象是非常容易的,但是 mock 一个 Class 就稍微有些复杂了。在本文中,我们将介绍如何使用 Jest 进行测试时,如何 mock 掉一个 Class。
什么是 Class?
在 JavaScript 中,Class 是一种语法糖,它让我们可以更方便地定义一个对象。例如:
----- ------ - ----------------- - --------- - ----- - ---------- - ------------------- -- ---- -- ---------------- - - ----- ---- - --- --------------- ---------------- -- --------- -- ---- -- -----
在上面的例子中,我们定义了一个 Person 类,它有一个构造函数和一个 sayHello 方法。我们可以通过 new 关键字来创建一个 Person 的实例,然后调用 sayHello 方法。
如何 mock 掉一个 Class?
在 Jest 中,我们可以使用 jest.mock 方法来 mock 一个 Class。例如,我们有一个名为 Person
的 Class,我们可以这样 mock 它:
--------------------- -- -- - ------ ------------------------------- -- - ------ - --------- --------- -- --- --- ----- ------ - -------------------- ---------- -------- -- -- - ----- ---- - --- --------------- ---------------- ---------------------------------------- ----------------------------------------------- ---
在上面的代码中,我们使用 jest.mock 方法来 mock ./Person
模块。我们返回了一个 jest.fn,它会返回一个对象,这个对象有一个 sayHello 方法。在测试中,我们创建了一个 Person 的实例,并调用了它的 sayHello 方法,然后使用 expect 来判断它是否被调用了一次。
使用 jest.spyOn 方法
除了使用 jest.mock 方法外,我们还可以使用 jest.spyOn 方法来 mock 一个 Class。例如:
----- ------ - -------------------- ---------- -------- -- -- - ----- ---- - --- --------------- ----- --- - ---------------- ------------ ---------------- ------------------------------------- ---
在上面的代码中,我们使用 jest.spyOn 方法来 mock sayHello
方法。我们创建了一个 Person 的实例,并使用 jest.spyOn 方法来 mock 它的 sayHello 方法。在测试中,我们调用了 john 的 sayHello 方法,并使用 expect 来判断它是否被调用了一次。
总结
在本文中,我们介绍了如何使用 Jest 进行测试时,如何 mock 掉一个 Class。我们介绍了两种方法:使用 jest.mock 方法和使用 jest.spyOn 方法。这两种方法都可以让我们更好地进行测试。在实际开发中,我们可以根据具体情况选择合适的方法来进行测试。
参考资料
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6513d4d895b1f8cacdc475d8