У меня есть компонент Angular2, который содержит поле выбора, которое выглядит как
<select [(ngModel)]="envFilter" class="form-control" name="envSelector" (ngModelChange)="onChangeFilter($event)">
<option *ngFor="let env of envs" [ngValue]="env">{{env}}</option>
</select>
Я пытаюсь написать unit test для события ngModelChange. Это моя последняя неудачная попытка.
it("should filter and show correct items", async(() => {
fixture.detectChanges();
fixture.whenStable().then(() => {
el = fixture.debugElement.query(By.name("envSelector"));
fixture.detectChanges();
makeResponse([hist2, longhist]);
comp.envFilter = 'env3';
el.triggerEventHandler('change', {});
fixture.whenStable().then(() => {
fixture.detectChanges();
expect(comp.displayedHistory).toEqual(longhist);
});
});
У меня возникает проблема с тем, что изменение значения базовой модели comp.envFilter = 'env3';
не вызывает метод изменения. Я добавил el.triggerEventHandler('change', {});
, но это вызывает Failed: Uncaught (in promise): ReferenceError: By is not defined
. Я не могу найти никаких намеков в документации... любые идеи?