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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta