treeModel не определено при тестировании углового дерева - PullRequest
0 голосов
/ 08 мая 2019

Я работаю с angular-tree-component , чтобы показать дерево категорий в компоненте без состояния в angular.В настоящее время у меня запущен и запущен компонент, и пришло время провести несколько юнит-тестов.У меня возникла проблема, потому что я хочу протестировать функцию, которая выполняет метод update() treeModel, который является свойством компонента дерева, который предоставляет API компонента angular-tree.(См. Документацию здесь ).

Моя функция, названная updateTree(), просто запускает update() на treeModel, как показано ниже:

export class CategoryTreeComponent implements AfterViewInit {

  @ViewChild('tree') treeComponent: TreeComponent;
  treeModel: TreeModel;

  constructor() {
  }

  ngAfterViewInit() {
    debugger;
    this.treeModel = this.treeComponent.treeModel;
  }

  updateTreeFn() {
    this.treeModel.update();
  }

}

Итак, я написал своймодульный тест, как показано ниже.

it('should call update method of treeModel', () => {    
  component.ngAfterViewInit();
  fixture.detectChanges();
  const spy = spyOn(component.treeModel, 'update');
  component.updateTree();
  expect(spy).toHaveBeenCalled();  
});

Проблема в том, что treeModel всегда undefined.Я заметил, что treeModel - это свойство класса типа TreeModel в TreeComponent Class, а update - это метод объекта TreeModel.Вероятно, именно поэтому я получаю эту ошибку.

Любые идеи о том, как я могу протестировать этот метод обновления, вызывать и распознавать объект treeModel, чтобы шпионить за ним.

...