Мне нужно проверить, вызывается ли функция компонента Angular (func1) анонимным свойством функции объекта, динамически создаваемого внутри другого углового метода.Немного сложно понять, но позвольте мне объяснить это.
У меня есть экспортированный класс, у которого есть свойство с анонимной функцией типа.Примерно так:
export class Detail {
id: string;
name: string;
onSave: () => void;
}
В моем компоненте у меня есть метод, который создает экземпляр класса Detail и устанавливает анонимную функцию для свойства onSave
, которая вызывает 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
, чтобы он был вызван внутри анонимной функции, назначенной onSave