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

问题描述 投票:0回答:1

我正在对一个方法进行单元测试,在这个方法中,我用相同的参数做了两件不同的事情,我想检查两个语句中传递的参数是相同的。

我正在测试的方法

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

我知道我可以用 "toHaveBeenCalledWith "来测试一个特定的值。

但在这里,我想测试的是,在那里它是相同的 增加 而对于 删去.

angularjs unit-testing jasmine
1个回答
0
投票

我想你可以利用 callFake 在茉莉花上。callFake 每次调用你提供的函数时,都会调用该函数。

就像这样。

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+的样子。

© www.soinside.com 2019 - 2024. All rights reserved.