Я проверяю проверку компонента и могу проверить, является ли он ложным или нет, но я не знаю, как проверить, появляется ли сообщение об ошибке.
Вот HTML:
<input type="text" formControlName="name" class="form-control input-lg"
placeholder="{{ 'validation.attributes.name' | translate }}"
[ngClass]="{ 'is-invalid': !f.name.pristine && f.name.errors }"/>
<div *ngIf="!f.name.pristine && f.name.errors" class="text-primary">
<div *ngIf="f.name.errors.required">{{ 'validation.required' | translate:{'attribute':'Name'} }}
</div>
</div>
и вот мой реальный тест:
it(`form should be invalid without name`, async(() => {
comp.registerForm.controls['name'].setValue('');
expect(comp.registerForm.valid).toBeFalsy();
}));
Как проверить, появляется ли сообщение об ошибке?
РЕДАКТИРОВАТЬ:
Я сделал тест отладки с:
<div id="test" >qqq</div>
Я могу подтвердить это с помощью:
fixture = TestBed.createComponent(RegisterComponent);
de = fixture.debugElement.query(By.css('form'));
el = de.nativeElement;
const test = el.querySelector('#test');
expect(test.textContent).toContain('qqq'); // This will pass
Но когда я добавляю условие:
*ngIf="!f.name.pristine && f.name.errors"
Я получаю:
Cannot read property 'textContent' of null
Просто чтобы подтвердить, у меня есть
fixture.detectChanges();
в beforeEach()