检查调用函数时传递了哪些参数

Check which parameters were passed when a function is called

我正在对一种方法进行单元测试,在该方法中我使用相同的方法执行两个不同的操作parameter.I想检查在两个语句中传递了哪些参数。他们要么是一样的。

我正在测试的方法

 doWork(value: boolean) {
   if (value) {
      add(value);
    } else {
      delete(value);
   }
  }

我知道我可以使用 "toHaveBeenCalledWith" 测试特定值。

但在这里我想测试一下 adddelete.

的相同之处

我认为您可以在 Jasmine 上利用 callFakecallFake 每次调用该函数时都会调用您提供的函数。

像这样。

it('should call add and delete with the same value', () => {
  const addParameter;
  const deleteParameter;
  spyOn(component, 'add').and.callFake(value => addParameter = value);
  spyOn(component, 'delete').and.callFake(value => deleteParamter = value);
  component.add(5);
  component.delete(5);
  expect(addParameter).toBe(deleteParameter);
});

当然这是一个人为的例子,但类似的东西应该让你继续。我也写的好像你用的是Angular 2+.