模板中带有matSlideToggle的单元测试组件

时间:2020-02-16 12:28:45

标签: angular unit-testing angular-material karma-jasmine

我将matSlideToggle绑定到formControl值。我想创建一个单元测试,以测试何时更改了幻灯片切换值,然后相应地更改了表单中的状态值。

<form [formGroup]="form">
...
      <mat-slide-toggle
        formControlName="status"
        (change)="changed($event)"
      >
        Status
      </mat-slide-toggle>
...
</form>

表单初始化为

this.form = new FormGroup({
...
      status: new FormControl(false),
...
    });
  }

更改的方法:

  changed(status) {
    console.log(
      'status',
      status,
      this.form.get('status').value
    );
  }

在测试中,我执行以下操作:

const statusToggleEl = fixture.debugElement.query(By.directive(MatSlideToggle));
statusToggleEl.triggerEventHandler('change', { checked: true });
fixture.detectChanges();

此代码触发更改的方法,在控制台中,我可以看到“状态{checked:true} false”,这不应该被视为行为。

0 个答案:

没有答案