npm 包 jest-matcher-called-on 使用教程

阅读时长 4 分钟读完

在进行 JavaScript 的单元测试中,Jest 是一个非常好用的测试框架。然而,有时候我们在写测试的时候会遇到一个问题:我们需要确保一个函数的调用是在特定对象上进行的,而 Jest 并没有提供一个针对这种场景的单独断言。这时候我们可以使用一个叫做 jest-matcher-called-on 的 npm 包来解决这个问题。

安装

我们可以使用 npm 命令进行安装:

使用

jest-matcher-called-on 定义了一个名为 toCalledOn 的 Matcher。它可以被用来检测一个函数是否被在特定的对象上调用。让我们来看一下如何使用它。

在上面的例子中,我们首先定义了一个我们想要监测的对象 objectToCheck。我们给它设置了一个叫做 someMethod 的方法,并对其进行了 mock。在这之后,我们调用了 someMethod,然后我们使用 expect 来检查 someMethod 是否被在 objectToCheck 上调用了。我们使用了 expect(objectToCheck.someMethod).toCalledOn(objectToCheck) 来做这个检查。

如果检查不通过,Jest 会报错:expect(received).toCalledOn(object)。如果检查通过,测试就可以顺利通过了。

让我们再看一个例子。这次我们会更加细致地控制我们的测试:

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

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

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

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

在这个例子中,我们对两个对象进行了定义:objectToCheckotherObject。同样,我们对 objectToCheck 进行了 mock,并在其上调用了一个方法。这次我们使用两个断言来检查这种情况。

第一个断言检查了 someMethod 是否被在 objectToCheck 上调用了。如果检查通过,测试就可以通过了。如果检查不通过,测试就会失败。

第二个断言检查了 someMethod 是否被在 otherObject 上调用了。因为我们并没有在 otherObject 上调用这个方法,所以这个检查应该会失败。我们使用了 toThrowError 来检查这个检查是否失败,并对其消息进行了检查,以确保检查失败的原因是我们所想要的。

结论

使用 jest-matcher-called-on 可以让我们更加精细地控制我们的单元测试。它能够帮助我们确保调用了指定对象的指定方法,并帮助我们避免因为错误的方法调用带来的不必要的问题。

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

纠错
反馈