Я пытаюсь проверить компонент. Этот компонент зависит от директивы, которая называется Megazord. Мне нужна некоторая синтаксическая справка о том, как использовать директиву mock.
Пример использования сервисов как макет:
TestBed.configureTestingModule({
declarations: [..., MegazordCanvasDirective],
providers: [
{provide: UserService},
{provide: HttpClient, useClass: HttpClientMock}, // Mock
{provide: Router, useClass: RouterMock}, // Mock
]
}).compileComponents();
Это моя конфигурация TestBed:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [..., MegazordCanvasDirective],
...
}).compileComponents();
Тест:
it('should select level3', () => {
const level3Mocks = createMockLevel3();
component.onSelectLevel3(level3Mocks[0]);
// expect(component.selectedLevel3).toBe(level3Mocks[0]);
// expect(component.mode).toBe('tagging');
});
Директивная зависимость:
@ViewChild(MegazordCanvasDirective) public megazord;
Метод:
public onSelectLevel3(level3: Level3): void {
this.mode = 'tagging';
this.updateMegazord(); // This one is using Megazord Directive.
this.manager.clearSearchResults();
this.onSelectLevel1(level3.level1.id);
this.onSelectLevel2(level3.level1, level3.level2);
this.selectedLevel3 = level3;
}
метод updateMegazord:
private updateMegazord(): void {
this.megazord.api.toggleCanMask(this.mode === 'masking');
this.megazord.api.toggleCanTag(this.mode === 'tagging');
}
Ошибка: