jasmine.objectContaining 的单步调试

装饰好的 engine 调用 setup options:
jasmine.objectContaining 的单步调试_第1张图片

jasmine.objectContaining 的单步调试_第2张图片

jasmine.objectContaining 的单步调试_第3张图片

engine 指的是下图这段绿色代码:
jasmine.objectContaining 的单步调试_第4张图片

现在准备执行下面这段代码了:
jasmine.objectContaining 的单步调试_第5张图片

准备调用被 mock 过的 engine 函数:
jasmine.objectContaining 的单步调试_第6张图片

即下图 1 的函数:
jasmine.objectContaining 的单步调试_第7张图片

只要 spy 被调用,其调用时传入的参数,必定可以被记录:
jasmine.objectContaining 的单步调试_第8张图片

看这段代码:

jasmine.objectContaining 的单步调试_第9张图片

jasmine.objectContaining 的适用场合:

jasmine.objectContaining 用于那些期望只关心实际中的某些键/值对的时候。

把这段代码改造一下:

it(`should pass setup options to the original engine`, () => {

      const jerry = jasmine.arrayContaining([
        { provide: 'testToken', useValue: 'testValue' },
      ]);
      expect(originalEngine).toHaveBeenCalledWith(
        jasmine.objectContaining({
          bootstrap: 'TestModule',
          providers: jerry
        })
      );
    });

jasmine.objectContaining 返回的类型为:jasmine.ArrayContaining

jasmine.objectContaining 的单步调试_第10张图片

ArrayContaining 类型定义如下:
jasmine.objectContaining 的单步调试_第11张图片

单步调试:

jasmine.objectContaining 的单步调试_第12张图片

返回的是一个新的 matcher?

jasmine.objectContaining 的单步调试_第13张图片

就是一个简单的构造器:
jasmine.objectContaining 的单步调试_第14张图片

而 objectContaing 的逻辑类似,也是一个简单的构造器。

jasmine.objectContaining 的单步调试_第15张图片

把这两个对象进行比较:
jasmine.objectContaining 的单步调试_第16张图片

实际参数:
jasmine.objectContaining 的单步调试_第17张图片

最后返回 true:
jasmine.objectContaining 的单步调试_第18张图片

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

你可能感兴趣的:(jasmine.objectContaining 的单步调试)