Прежде всего, вам нужно издеваться над dtmService, потому что он не является предметом вашего теста. Вы можете сделать что-то вроде:
@NgModule({
...
providers: [
{
provide: DtmService, useValue:
getInitialData: () =>
of({
"serviceName":"UK 36 Month Mobile - no SIM card",
"serviceCode":"V240M-DTM-24-MOBILE-UK-B"
})
}
]
...
})
Если вы хотите вызвать событие изменения, вы можете сделать что-то вроде:
const select = fixture.debugElement.query(By.css('select'));
select.nativeElement.value = 'serviceCodeX';
dispatchEvent(select.nativeElement, 'change');
fixture.detectChanges();
tick();
Убедитесь, что для этого используется fakeAsync
.
Затем вы создаете шпиона для вашей функции:
const spy = spyOn(component, 'serviceChanged');
Чтобы проверить, был ли он вызван, вам нужно:
expect(spy).not.toHaveBeenCalled();
После этого вы можете получить ссылки на другую формууправляет тем же, что и select, и проверяет их содержимое в зависимости от вашей логики.