Ho un input di testo e sto ascoltando le modifiche.Componente Angular2: modifica del valore di input del modulo di test
mycomponent.ts
ngOnInit() {
this.searchInput = new Control();
this.searchInput.valueChanges
.distinctUntilChanged()
.subscribe(newValue => this.search(newValue))
}
search(query) {
// do something to search
}
mycomponent.html
<search-box>
<input type="text" [ngFormControl]="searchInput" >
</search-box>
Esecuzione dell'applicazione tutto funziona bene, ma voglio unità di testarlo.
Così qui è quello che ho provato
mycomponent.spec.ts
beforeEach(done => {
createComponent().then(fix => {
cmpFixture = fix
mockResponse()
instance = cmpFixture.componentInstance
cmpFixture.detectChanges();
done();
})
})
describe('on searching on the list',() => {
let compiled, input
beforeEach(() => {
cmpFixture.detectChanges();
compiled = cmpFixture.debugElement.nativeElement;
spyOn(instance, 'search').and.callThrough()
input = compiled.querySelector('search-box > input')
input.value = 'fake-search-query'
cmpFixture.detectChanges();
})
it('should call the .search() method',() => {
expect(instance.search).toHaveBeenCalled()
})
})
test fallisce come il metodo .search()
non viene chiamato.
Suppongo di dover impostare lo value
in un altro modo per fare in modo che il test si accorga del cambiamento, ma in realtà non so come.
Qualcuno ha idee?