2017-05-19 3 views
2

Ich versuche Unit-Test die Methode abc (Event) mit Karma. Ich habe ein Drop-Down-Menü in meiner Ansichtsseite mit 4 Optionen, die bei Änderung die abc (Event) -Methode auslösen.Unit Tests Ereignisse in Karma Winkel 2 Anwendung

Hier ist meine Ansicht Seite:

<div class="myClass"> 
<select (change)="abc($event)" id="my"> 
    <option value="one">One</option> 
    <option value="two">Two</option> 
    <option value="three">Three</option> 
    <option value="four">Four</option> 
</select> 

meine component.ts Datei enthält die Definition der Methode abc.

import {Component,OnInit} from '@angular/core'; 
import { LocaleService } from '../../../services/locale.service'; 
@Component({ 
selector: 'app-localeselector', 
templateUrl: './localeselector.component.html', 
styleUrls: ['./localeselector.component.scss'] 
}) 


export class LocaleselectorComponent implements OnInit{ 

private localeService: any; 
private language; 
constructor() { } 

ngOnInit() { } 

} 

abc(ev: Event) { 
    //something... 
} 
} 

Wie kann ich die Methode abc testen? Auch, wie man $ Ereignis vortäuscht? Vielen Dank im Voraus.

+0

Sie nur eine Instanz von 'LocaleselectorComponent' Komponente erstellen könnte und rufen' abc'. Außerdem können Sie den Konstruktor entfernen. –

+0

@ AluanHaddad: Wie kann ich das Ereignis beim Aufruf der Methode abc verspotten? –

+0

@AmitChigadani: Versucht, das Event-Objekt zu verspotten. Aber kein positives Ergebnis :( –

Antwort

1

Danke, es hat funktioniert !!! :) Ich habe die Lösung gefunden. War in der Lage, das Ereignis zu verspotten, indem er ein Objekt einschickte.

it('should work',() => { 
    component.abc({ srcElement: { value: 'xyz' } }); 
    expect(someMethod.getValue()).toEqual('xyz'); 
}); 

Ich änderte auch die ABC-Methode in meiner component.ts Datei zu

abc($event){ 
    //do something... 
} 
Verwandte Themen