как проверить компонент, когда родительский компонент вставлен в конструктор - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь протестировать дочерний компонент в Angular 8

Дочерний компонент зависит от его функций родительского компонента, и родительский компонент не должен знать о дочернем компоненте, это может быть один из нескольких различных типовдочерние компоненты

В дочернем компоненте я получаю ссылку на родительский компонент, вставляя его в конструктор следующим образом:

export class ChildComponent {

  constructor(
    @Inject(forwardRef(() => ParentComponent)) public parent: ParentComponent
  ) { }

}

Проблема в том, что когда я пытаюсь написать модульное тестирование для дочернего компонента, Карма выдает ошибку: No provider for ParentComponent

Я добавил ParentComponentкомпонент в поставщиках, ошибка исчезла, однако она все еще не работает, например, вызов childComponent.parent.ngOnInit() даст TypeError: Cannot read property 'ngOnInit' of undefined

Как заставить родительский компонент работать в тесте дочернего компонента?

import { ComponentFixture, TestBed } from '@angular/core/testing';

describe('Create Child Component', () => {
  let component: ChildComponent;
  let fixture: ComponentFixture<ChildComponent>;
  let componentElement: HTMLElement;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        ParentComponent,
        ChildComponent,
      ]
    }).compileComponents();
  }));


  beforeEach(() => {
    fixture = TestBed.createComponent(ChildComponent);
    component = fixture.componentInstance;
    componentElement = fixture.debugElement.nativeElement;

    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
    expect(component.parent).toBeTruthy();
    
    component.parent.ngOnInit();
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...