2017-02-20 2 views
2

У меня есть компонент в Угловом с этим HTML:Проверить переключатель в единичном испытании углового

<div class="row"> 
    <label for="tipo" class="column">Tipo: </label> 
    <div *ngFor="let tipo of tipos" class="column"> 
    <input type="radio" name="tipo" [value]="tipo.id" 
     [(ngModel)]="movimiento.tipo" (ngModelChange)="alCambiarTipo()"> 
    <span class="{{tipo.texto | lowercase}}">{{ tipo.texto }}</span> 
    </div> 
</div> 

Он имеет две кнопки радио, и на смене он запускает функцию в моем компоненте. В своем тесте я хочу проверить второй переключатель, чтобы проверить, вызвана ли моя функция. Я попробовал этот код, но он не работает:

it('should call alCambiarTipo on radio button change',() => { 
    spyOn(component, 'alCambiarTipo').and.callThrough(); 
    let options: DebugElement[] = fixture.debugElement.queryAll(By.css('input[type="radio"]')); 
    let secondOption: HTMLInputElement = options[1].nativeElement; 
    secondOption.checked = true; 
    expect(component.alCambiarTipo).toHaveBeenCalled(); 
}); 

Я также попытался с помощью .click() на входе, и это также не работает. Что я могу сделать, чтобы вызвать функцию? Благодарю.

PS: Я также попытался сменить модель, добавив component.movimiento.tipo = 1; и позвонив по телефону fixture.detectChanges(), и он также не работает.

+0

У меня аналогичная проблема. Вы разрешили это? –

ответ

2

Потому что вы используете неправильное событие. Это должно быть change event.

options[1].triggerEventHandler('change', { target: options[1].nativeElement }); 

Вам даже не нужно устанавливать проверить

Смежные вопросы