2017-02-20 142 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

因爲您使用了錯誤的事件。應該是更改事件。

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

你甚至都不需要設置檢查