【发布时间】:2018-11-04 13:40:38
【问题描述】:
我在模板驱动的表单中有一个角度输入。
<form name="editForm" role="form" novalidate (ngSubmit)="save()" #editForm="ngForm">
<input #cardInput type="text" class="form-control" name="tarjetaSanitaria" id="field_tarjetaSanitaria"
[(ngModel)]="paciente.tarjetaSanitaria" maxlength="20"/>
<small class="form-text text-danger"
[hidden]="!editForm.controls.tarjetaSanitaria?.errors?.maxlength" jhiTranslate="entity.validation.maxlength" translateValues="{ max: 20 }">
This field cannot be longer than 20 characters.
</small>
如何单元测试它只能输入最大长度为 20 的文本。
我的组件中有这个:
export class PacienteDialogComponent implements OnInit {
paciente: Paciente;
constructor( //other things not paciente
){
}
.....
这是我的 paciente.model.ts,它具有我想测试的输入 tarjetaSanitaria 的属性:
import { BaseEntity } from './../../shared';
export class Paciente implements BaseEntity {
constructor( public tarjetaSanitaria?: string)
{
}
}
这是我的测试课:
import { Paciente } from...
import { PacienteDialogComponent } from '..
describe(....){
let comp: PacienteDialogComponent;
let fixture: ComponentFixture<PacienteDialogComponent>;....
beforeEach(() => {
fixture = TestBed.createComponent(PacienteDialogComponent);
comp = fixture.componentInstance;...
it ('Input validation', async(() => {
comp.cardInput.nativeElement.value = 'dddddddddddddddddddddddddddddddddddddddddddddddddddddd' ; // a text longer than 20 characters
expect(comp.cardInput.nativeElement.valid).toBeFalsy();
}));
测试通过了,但无论如何这是测试输入验证的正确方法吗? toBeFalsy() 之后会发生什么?用户怎么知道这是假的?如果是假的,这种情况下可以输出消息吗?
还有其他方法可以测试表单输入验证吗?
【问题讨论】:
标签: javascript html angular unit-testing