Если вы хотите проверить, как родитель и потомок общаются друг с другом, вам не следует создавать изолированный экземпляр MockQuickSearchPageComponent
, а использовать экземпляр, инициализированный в родительском компоненте.
Текущий тест
AddUserComponent MockQuickSearchPageComponent
В вашей реализации они ничего не знают друг о друге.
TestBed.createComponent (MockQuickSearchPageComponent); создает новое дерево компонентов с MockQuickSearchPageComponent в качестве корневого компонента
Как это должно быть сделано
AddUserComponent
||
\/
MockQuickSearchPageComponent
Теперь MockQuickSearchPageComponent
является дочерним элементом AddUserComponent
и может прослушивать любые события, исходящие от этого дочернего компонента.
Это можно сделать с помощью fixture.debugElement.query(By.directive(MockQuickSearchPageComponent)
:
describe('quickSearchComponent', () => {
beforeEach(() => {
fixture.componentInstance.initSearchPanel = true;
fixture.detectChanges();
const childDirQueryResult =
fixture.debugElement.query(By.directive(MockQuickSearchPageComponent));
mockQuickSearchComponent = childDirQueryResult.componentInstance;
createButton = childDirQueryResult.query(By.css('button.quick-search-page-submit'));
});
it('should create', () => {
expect(mockQuickSearchComponent).toBeTruthy();
});
it('should open create a new user panel', () => {
spyOn(component, 'showCreateUserPanel');
createButton.triggerEventHandler('click', null);
expect(component.showCreateUserPanel).toHaveBeenCalled();
});
});
Пример Plunker