【发布时间】:2018-05-28 08:01:09
【问题描述】:
我想测试一些在 Angular 中真正不在 Anguar 教程中的东西。
我正在尝试测试当此输入的值无效时输出错误消息,因此在放置超过 20 个字符的 wor 的情况下隐藏属性为 false。
<input #cardInput type="text" class="form-control" name="tarjetaSanitaria" id="field_tarjetaSanitaria"
[(ngModel)]="paciente.tarjetaSanitaria" maxlength="20"/>
<div [hidden]="!(editForm.controls.tarjetaSanitaria?.dirty && editForm.controls.tarjetaSanitaria?.invalid)">
<small class="form-text text-danger" id="ref"
[hidden]="!editForm.controls.tarjetaSanitaria?.errors?.maxlength" translateValues="{ max: 20 }">
This field cannot be longer than 20 characters.
</small>
我的组件有这个:
paciente: Paciente = {tarjetaSanitaria: 'ddd'} as Paciente;
我的测试:
fit ('Blank input is not valid', async(() => {
comp.paciente.tarjetaSanitaria = 'ddddddddddddddddddddddddddddddddddddddddddd' ;
spyOn(comp, 'save');
var1 = comp.submitButton.nativeElement;
var1.click();
fixture.detectChanges();
expect(comp.save).toHaveBeenCalledTimes(1);
expect(fixture.debugElement.query(By.css('#ref')).nativeElement.hasAttribute('hidden')).toEqual(false);
}));
它总是失败说 Expected true to qual false.IF 我删除了 fixture.detectChanges 它离开了过去。我是不是做错了什么?
【问题讨论】:
-
什么意思?如果我这样做 console.log(fixture.debugElement.query(By.css('#ref')).nativeElement.innerHTML);它打印错误消息:字段....
-
也许您需要检查“隐藏”属性的值,而不是检查该属性是否存在?
-
检查你的意思是打印它的值?正如我上面评论的那样,它会打印错误消息
标签: javascript html angular testing