После моего комментария приведен пример тестирования компонента Angular без Angular.
Допустим, у вас есть очень простой маршрутизируемый компонент, например:
export class MyRoutedComponent {
constructor(private router: Router) {}
navigateTo(route: string) {
this.router.navigate(route);
}
}
Обычный тест состоит в том, чтобы обеспечить зависимость макетом и использовать для этого Тестовый стенд.
Ну, вы не обязаны, и даже руководство по тестированию говорит вам так:
Angular TestBed облегчает такой вид тестирования, как вы увидите в следующих разделах. Но во многих случаях тестирование одного только класса компонента без участия DOM может проверить большую часть поведения компонента более простым и очевидным способом.
Что вы можете сделать, это:
describe('MyRoutedComponent', () => {
const routerMock = {
navigate: () => null
};
const instance = new MyRoutedComponent(routerMock);
it('should call router.navigate when navigateTo()', () => {
spyOn(routerMock, 'navigate');
instance.navigateTo('foo');
expect(routerMock.navigate).toHaveBeenCalledWith('foo');
});
});
Как вы можете видеть, он тестирует компонент так, как это делал бы Testbed, но, поскольку он не полагается на какой-либо HTML, лучше сделать это вместо этого, как это предлагается в руководстве.