我正在对一个方法进行单元测试,在这个方法中,我用相同的参数做了两件不同的事情,我想检查两个语句中传递的参数是相同的。
我正在测试的方法
doWork(value: boolean) {
if (value) {
add(value);
} else {
delete(value);
}
}
我知道我可以用 "toHaveBeenCalledWith "来测试一个特定的值。
但在这里,我想测试的是,在那里它是相同的 增加 而对于 删去.
我想你可以利用 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+的样子。