Sto cercando di scrivere uno unit test per click
evento con angular2 rc1. il mio componente gestisce l'evento click con il metodo onClick()
e cambia il campo name
da bar
a foo
. vedi questo plunker.unit test angular2: come testare gli eventi con tiggerEventHandler
Ora voglio attivare un evento click
per verificare se il valore name
è bar
oppure no. per favore vedi il file unit-testing.spec.ts
su plunker.
it('should change name from foo to bar on click event', inject([],() => {
return builder.createAsync(UnitTestingComponentTestController)
.then((fixture: ComponentFixture<any>) => {
let query = fixture.debugElement.query(By.directive(UnitTestingComponent));
expect(query).toBeTruthy();
expect(query.componentInstance).toBeTruthy();
// fixture.detectChanges();
expect(query.componentInstance.name).toBe('foo');
query.triggerEventHandler('click',{});
expect(query.componentInstance.name).toBe('bar');
// fixture.detectChanges();
});
}));
E qui è UnitTestingComponentTestController
@Component({
selector: 'test',
template: `
<app-unit-testing></app-unit-testing>
`,
directives: [UnitTestingComponent]
})
class UnitTestingComponentTestController {
}
Questo test non riesce con questo messaggio:
Expected 'foo' to be 'bar'.
Ecco la firma del metodo per triggerEventHandler()
triggerEventHandler(eventName: string, eventObj: any): void;
La mia domanda è come posso lanciare un evento e testarlo con angular2.
Una soluzione potrebbe essere quella di chiamare onClick()
metodo su componentInstance
ma in questo caso abbiamo appena testare interna della classe e non il comportamento componente
Can u inviare il banco di prova completo per favore? –
L'ho risposto un anno fa. sfortunatamente non ho più accesso a questo progetto. –
np, ha posto una domanda qui: https://stackoverflow.com/questions/44616434/how-to-actually-trigger-a-click-event-and-check-the-outcome-in-angular2 –