检查调用函数时传递了哪些参数
Check which parameters were passed when a function is called
我正在对一种方法进行单元测试,在该方法中我使用相同的方法执行两个不同的操作parameter.I想检查在两个语句中传递了哪些参数。他们要么是一样的。
我正在测试的方法
doWork(value: boolean) {
if (value) {
add(value);
} else {
delete(value);
}
}
我知道我可以使用 "toHaveBeenCalledWith" 测试特定值。
但在这里我想测试一下 add 和 delete.
的相同之处
我认为您可以在 Jasmine 上利用 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+.
我正在对一种方法进行单元测试,在该方法中我使用相同的方法执行两个不同的操作parameter.I想检查在两个语句中传递了哪些参数。他们要么是一样的。
我正在测试的方法
doWork(value: boolean) {
if (value) {
add(value);
} else {
delete(value);
}
}
我知道我可以使用 "toHaveBeenCalledWith" 测试特定值。
但在这里我想测试一下 add 和 delete.
的相同之处我认为您可以在 Jasmine 上利用 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+.