乐趣区

关于jest:Jest-测试框架-expect-和-匹配器-matcher-的设计原理解析

副标题:SAP Spartacus SSR 优化的单元测试剖析之二 – 调用参数检测
源代码:

 it(`should pass parameters to the original engine instance`, () => {expect(originalEngineInstance).toHaveBeenCalledWith(
        mockPath,
        mockOptions,
        mockCallback
      );
    });

留神察看 jest.Expect 的返回值:类型为 jest.JestMatchersShape

单步调试 expect 的调用过程:

从正文看,该函数为 spec 创立一个 expectation, 传入的 actual 为 spy 之后的版本。

结构一个 expectation,须要以上的参数。

紧接着调用 toHaveBeenCalledWith:

反对的所有办法,在 Chrome 开发者工具里可能看到:

toHaveBeenCalledWith

执行到这里来了:

所有可用的匹配器 matchers,都定义在文件 jasmine.js 里:

因而,toHaveBeenCalledWith 也算匹配器 matchers 之一。

结构一个匹配器实例:

调用匹配器工厂,结构一个匹配器实例:

其实例的运行代码如下图所示:

比拟理论被调用的参数,是否和冀望被调用的参数完全一致。

进入数组的比拟分支:

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

退出移动版