Я устанавливаю несколько тестов для моего Angular приложения, и в одном из них я получаю эту ошибку при попытке получить элемент HTML: TypeError: Cannot read property 'textContent' of null
Это образец моего шаблона :
<div *ngIf="parentProps" class="detalhes-container">
<!-- <p class="teste">teste</p> -->
<div *ngFor="let info of parentProps.applicationsData; let i = index; trackBy: trackByFn">
<p class="teste">teste</p>
</div>
</div>
Для тестирования есть два тега p
, первый комментируется (работает нормально), а второй - тот, который я хочу, чтобы он работал.
Сценарий
spe c .ts:
describe('ListDetailsComponent', () => {
let component: ListDetailsComponent;
let fixture: ComponentFixture<ListDetailsComponent>;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ ListDetailsComponent ]
})
.compileComponents();
})
beforeEach(() => {
fixture = TestBed.createComponent(ListDetailsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create list details', () => {
expect(component).toBeTruthy();
});
it('functions', () => {
component.parentProps = true
fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement
expect(compiled.querySelector('.teste').textContent).toContain('teste');
})
});
Причина, по которой у меня есть два тега p
, заключается в том, что я понял, что одна из проблем связана со свойством parentProps
, используемым *ngIf
, поэтому я установил в своем тесте true
, затем он заработал, однако после этого *ngIf
у меня также есть блок с *ngFor
, и когда я запускаю свой тест с тегом внутри этого l oop Я получаю ту же ошибку, поэтому, я думаю, проблема в *ngFor
. С *ngIf
мне удалось обойти это, но я понятия не имею, как решить проблему *ngFor
.
Одна вещь, которая может быть важной, parentProps
действительно является объектом, исходящим из родительский компонент, который я получаю через @Input
.
Как я могу решить эту проблему?