Jest 内部原理剖析

Jest 是 Facebook 开源的一个 JavaScript 测试框架,已经应用在 Babel / TypeScript / Node / React / Angular / Vue 等项目中。

在愉悦地编写 Jest 测试代码后,你是否会好奇 test / expect / mock / spyOn 这些内置方法是如何实现的呢?下面我们一起来看一下。

Test

Jest 中的 test 函数标准实例是:

这里可以注意到,如果第二个参数的函数执行没有抛出异常的话,会打印第一个参数,因此我们的模拟实现可以是:

Expect

expect 函数的典型使用实例是:

注意到expect 的返回值具备一个可以调用的方法toBe ,那么我们可以这样模拟expect

Mock

当我们要避免测试一个功能时又依赖于不稳定的另外一个功能,我们创建一个 Mock 来更好的管理。Jest 使用 jest.fn 是实现 Mock

为了实现上面的效果,我们可以这样模拟定义jest.fnexpect

最后更新于

这有帮助吗?