代码之家  ›  专栏  ›  技术社区  ›  Tester

测试角度绑定

  •  0
  • Tester  · 技术社区  · 6 年前

    有人能对这个问题提些提示吗? 我有一个角度的表单,其中有一个输入,用于使用函数save()将患者姓名保存在数据库中。 部件1 .

     <form  name="editForm" role="form" novalidate (ngSubmit)="save()" #editForm="ngForm">
     
     <input #inputValid type="text" class="form-control" name="nombre" id="field_nombre"
    	                [(ngModel)]="paciente.nombre" required/>
    此表单在保存时自动关闭,我应该在其他组件组件2的HTML页面上看到结果。其HTML如下:

        <div class="table-responsive" *ngIf="pacientes">
         <tr *ngFor="let paciente of pacientes ;trackBy: trackId">
                    <td>{{paciente.nombre}}</td>
                    ....
    我已经测试过数据是否保存了我指的是保存功能,还有按钮提交调用保存。

    我想使用jasmine对前端部分进行单元测试,我以前保存的数据会显示在我的表中。我该怎么做?到目前为止,我可以使用viewschild获取输入和表的引用,但是我需要一个关于如何实际测试它的提示。关于测试的角度教程不包括这样的例子。 谢谢,

    1 回复  |  直到 6 年前
        1
  •  1
  •   Fateh Mohamed    6 年前

    尝试这样做,您可以给tr元素一个类名,并在提交后对ngfor元素进行计数,检查它是否不等于0,元素长度是否从0传递到1,并向表单“id='formid”添加一个ID。

    <form  id="FormId" name="editForm" role="form" novalidate (ngSubmit)="save()" #editForm="ngForm">
    
    
    <tr class="patient" *ngFor="let paciente of pacientes ;trackBy: trackId">
    

    这里是测试,新元素插入到末尾,所以它的索引是length-1,您可以检查它的值是否等于您的输入值。

    it('should submit the form and save data', async(() => {
       let formElement: DebugElement;
       formElement = fixture.debugElement.query(By.css('#FormId'));
       formElement .triggerEventHandler('ngSubmit', null);
       expect(component.save).toHaveBeenCalledTimes(1); // check that save is called on sybmit
       const tableLength = fixture.debugElement.queryAll(By.css('.patient')).length;
       expect(tableLength ).toBe(1) // check that the element is added and length pass from 0 to 1
       expect(fixture.debugElement.queryAll(By.css('.patient'))[tableLength-1].nativeElement.value).toEqual(component.paciente.nombre)
    
      }))