Хорошо, так как заинтересовался, я проверил некоторые вещи, но это не будет прямым ответом или даже решением вашей проблемы, хотя вы можете найти что-то полезное.
Похоже, что hostElement.listeners
указывает на прослушиватели событий, добавленные @HostListener
декоратором, вы можете легко это проверить.
Я также пытаюсь найти способ получить слушателей, но безуспешно.
То, что я хотел бы сделать здесь, это проверять всякий раз, когда вызывается renderer.listen
, и оставлять реализацию позади - этот способ может быть неправильным для тестирования выше, чем «модульные тесты», так как вы хотите проверить, действительно ли это работает, но для модуля это должно быть хорошо. Если вы хотите шпионить за Renderer2
, вы можете сделать это:
const renderer = fixture.componentRef.injector.get(Renderer2);
const listenSpy = spyOn(renderer, 'listen');
expect(listenSpy).toHaveBeenCalled();
Редактировать 1:
Поскольку указанный способ получения Renderer2
устарел, его следует использовать:
const renderer = fixture.componentRef.injector.get(Renderer2 as Type<Renderer2>);