Я столкнулся с той же проблемой в IntelliJ IDEA.
Чтобы решить проблему подключения, мне пришлось отключить (⌘ + F2 с использованием ключевых привязок по умолчанию на маке) и снова подключиться. Просто нажать «Обновить» было недостаточно.
Во-первых, вы следите за contactService
, который после кода, который вы предоставляете, не определяется нигде. И вы должны определить свой contactSevice
перед выполняемой функцией compileComponents()
.
, чтобы вы делали что-то вроде этого.
TestBed.configureTestingModule({
declarations: [ ContactComponent ],
imports:[
FormsModule,
ReactiveFormsModule,
HttpClientModule, HttpClientTestingModule],
providers:[
...,
{
provide: ContactService,
useValue: class {
sendMail: () => of({//what ever object you want to return here});
}
}],
schemas: [NO_ERRORS_SCHEMA]
})
.compileComponents();
Но вышеприведенный подход делает ваш макет службы вызванная функция, и вы не можете на самом деле шпионить за ней. Если вам нужно шпионить за ней и делать все, что хотите, с помощью макетной службы. Вы можете реализовать такой макет:
class MockContactService {
sendMail() {
return of({});
}
}
let mockContactService;
beforeEach(()=> {
mockContactService = new MockContactService();
TestBed.configureTestingModule({
...,
providers:[
{
provide: ContactService,
useValue: mockContactService,
}],...
})
.compileComponents();
it('what ever', () => {
spyOn(mockContactService, 'sendMail');
})
})