Componente Angular2: Prueba de cambio de valor de entrada de formulario
Tengo una entrada de texto y estoy escuchando los cambios.
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>
Ejecutando la aplicación todo funciona bien, pero quiero probarlo de forma unitaria.
Así que esto es lo que probé
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()
})
})
La prueba falla ya que.search()
No se llama al método
Supongo que tengo que configurar elvalue
de otra manera hacer que la prueba se dé cuenta del cambio, pero realmente no sé cómo.
Alguien tiene ideas?