茉莉花-创建嵌套的间谍对象

时间:2018-08-14 03:36:29

标签: jasmine mocking

有没有办法让Jasmine生成间谍,以便通过这样的测试:

it('a', function () {
  const a = jasmine.createSpyObj('a', ['b', 'c.d', 'e.f.g']);
  a.b();
  a.c.d();
  a.e.f.g();
  expect(a.b).toHaveBeenCalled();
  expect(a.c.d).toHaveBeenCalled();
  expect(a.e.f.g).toHaveBeenCalled();
});

这种用例是减少创建此类嵌套间谍所需的类型

1 个答案:

答案 0 :(得分:0)

没有茉莉api可以轻松为您创建。您需要直接创建间谍,这样最好:

const a = jasmine.createSpy().and.returnValue({
  b: jasmine.createSpy(),
  c: jasmine.createSpy().and.returnValue({
    d: jasmine.createSpy()
  }),
  e: jasmine.createSpy().and.returnValue({
    d: jasmine.createSpy().and.returnValue({
      f: jasmine.createSpy()
    })
  })
});

如果您需要经常执行此操作,则建议您创建某种函数,该函数可以递归地提取间谍描述并从中生成嵌套的间谍对象。但是,茉莉花中没有一种能为您做到这一点。