单元测试角度6

时间:2018-10-30 10:34:16

标签: unit-testing angular6

我有两个带有输入的按钮,如下所示:

 <div class="input-group col-5 align-self-center">
      <input id="endeDate" class="form-control" placeholder="dd.mm.yyyy" name="endeDate"
             [minDate]="minDate" [markDisabled]="disableWeekend" [class.is-invalid]="checkValidity('dateEnd')"
             ngbDatepicker #endeDate="ngbDatepicker" formControlName="dateEnd" (focus)="endeDate.toggle()">
      <div class="input-group-append">
        <button class="btn btn-primary calendar" (click)="endeDate.toggle()" type="button">
          <fa-icon icon="calendar-alt"></fa-icon>
        </button>
      </div>
    </div>


<div class="input-group col-5 align-self-center">
      <input id="startDate" class="form-control" placeholder="dd.mm.yyyy" name="startDate"
             [minDate]="minDate" [markDisabled]="disableWeekend" [class.is-invalid]="checkValidity('dateStart')"
             ngbDatepicker #startDate="ngbDatepicker" formControlName="dateStart" (focus)="startDate.toggle()">
      <div class="input-group-append">
        <button class="btn btn-primary calendar" (click)="startDate.toggle()" type="button">
          <fa-icon icon="calendar-alt"></fa-icon>
        </button>
      </div>
    </div>

我需要编写单元测试。单元测试必须检查日期选择器。

  it('check Validation field Ende', () => {
       let datepicker = fixture.debugElement.nativeElement.querySelector('button').endeDate.toggle();
       expect(document.querySelector('.dropdown-menu.show')).toBeNull();
       datepicker.click();
       expect(document.querySelector('.dropdown-menu.show')).not.toBeNull();
  });

但是在第一和第二,它打开了相同的第一个按钮。 我也尝试过这个:

   let datepicker = 
   fixture.debugElement.query(By.css('input[id=endeDate]'));
   datepicker.nativeElement.click();

但是它不起作用。 还有另一个想法

1 个答案:

答案 0 :(得分:0)

通常-由于Angular是UI组件的更多部分-我不建议从Angular内部将其作为“单元测试”进行。这更多是您正在执行的端到端测试,所以为什么不使用Selenium之类的东西呢?

此外-您正在通过CSS选择元素-强烈建议您改为使用ID。