我是Angular的初学者测试员,我使用Jasmine进行单元测试。 我有template driven form这样的话:
<form name="editForm" role="form" novalidate (ngSubmit)="save()" #editForm="ngForm">
<div class="modal-header">
.....
</div>
<div class="modal-body">
<div class="half-block">
<div class="form-group half-item">
<label class="form-control-label" jhiTranslate="oncosupApp.paciente.nombre" for="field_nombre">Nombre</label>
<input type="text" class="form-control" name="nombre" id="field_nombre"
[(ngModel)]="paciente.nombre" required/>
<div [hidden]="!(editForm.controls.nombre?.dirty && editForm.controls.nombre?.invalid)">
<small class="form-text text-danger"
[hidden]="!editForm.controls.nombre?.errors?.required" jhiTranslate="entity.validation.required">
This field is required.
</small>
</div>
</div>
...........
现在我想对它进行单元测试,但是我没有找到关于如何测试模板驱动表单的任何教程。根据角度Testing Model Driven Forms,这些形式无法进行单元测试:
提示:使用模板驱动的表单,状态在视图中,除非组件使用ViewChild引用模板表单 装饰者没有办法使用单元测试来测试表单。我们会 必须执行完整的E2E测试,模拟按钮点击和输入 价值形式。
如果遇到同样问题的人会与我分享解决方案,如何测试此表单的验证,我将不胜感激。不是很详细,但我只是想检查一下是否真的是apear以及提交按钮是否保存了数据。
我有这个model.ts,它有自己的导入和代码:
export class Paciente implements BaseEntity {
constructor(
public nombre?: string,
....
我想创建一个新对象的其中一个规范就在这里:
it('Should call create service on save for new entity',
inject([],
fakeAsync(() => { //assync is used to let all the assync code to finish before continuing
// GIVEN
const entity = new Paciente('anna');//here is a NOMBRE THAT i WANT TO CHECK IF ITS FIELD APPEARS IN TEH FORM OR NOT
spyOn(service, 'create').and.returnValue(Observable.of(new HttpResponse({body: entity})));
comp.paciente = entity;
// WHEN
comp.save();
tick(); // simulate async
// THEN
expect(service.create).toHaveBeenCalledWith(entity);
expect(comp.isSaving).toEqual(false);
expect(mockEventManager.broadcastSpy).toHaveBeenCalledWith({ name: 'pacienteListModification', content: 'OK'});
expect(mockActiveModal.dismissSpy).toHaveBeenCalled();
})
)
);