我需要测试Angular组件函数(func1)是否由在另一个angular方法内部动态实例化的对象的匿名函数属性调用。理解起来有些棘手,但让我解释一下。
我有一个导出的类,该类具有带有匿名函数作为类型的属性。像这样:
export class Detail {
id: string;
name: string;
onSave: () => void;
}
在我的组件中,我有一个实例化Detail类对象并为调用onSave
的{{1}}属性设置匿名函数的方法。
funFn
我想测试执行myFunction(item: Item){
const detail = new Detail();
detail.onSave= (){
this.runFn(item);
}
this.someService.doSomethingWith(details);
}
runFn(item: Item){
... do something cool.
}
时是否调用了runFn
。因此,在我的测试案例中,我有:
onConfirm
上面的代码不起作用,因为it("Should calls runFn", function () {
spyOn(Detail.prototype, 'onSave').and.callThrough();
const mockItem = new Item();
component.myFunction(mockItem);
expect(component.runFn).toHaveBeenCalledWith(mockItem);
});
不是方法,而是属性。因此,如何模拟在onSave
内部创建的实例并测试myFunction
是否已在分配给runFn
的匿名函数内部被调用