Компонент Angular2: изменение входного значения формы тестирования

У меня есть текстовый ввод, и я слушаю изменения.

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>

Запустив приложение, все работает нормально, но я хочу протестировать его.

Итак, вот что я попробовал

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()
        })
    })

Тест не проходит как.search() метод не вызывается.

Я думаю, мне нужно установитьvalue по-другому, чтобы тест понял изменение, но я действительно не знаю как.

У кого-нибудь есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос