Как выполнить модульный тест метода valueChanges в ngx-mat-select-search в раскрывающемся списке - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь написать модульный тест для одного из выпадающих списков с поиском в верхней части, связанной с ним. Проблема в том, что valueChanges не запускается, и я не могу увидеть filteredValues для установки утверждения. Я вижу, что окно поиска обновляется значением 'S2', но не вижу значения valueChanges из вызываемого компонента. Любая помощь в том, что я делаю неправильно, очень ценится.

Модульный тест:

it('should search for stores', fakeAsync(() => {
        initTest('add');
        fixture.detectChanges();
        fixture.nativeElement.querySelector('#select').click();
        fixture.detectChanges();
        const d = overlayContainer.getContainerElement().querySelector('#search');
        d.textContent = 'S2';
        d.dispatchEvent(new Event('input'));
        flush();
        fixture.detectChanges();
        fixture.whenStable().then(() => {
            component.filteredValues.subscribe(value => {
                console.log('Value :: ' + JSON.stringify(value));
            });
        });
    }));

Внутренний компонент:

this.search.valueChanges.pipe(takeUntil(this._destroyed)).subscribe(searchText => {
            this.filteredValues = of(this.filterValue(searchText));
        });

1 Ответ

0 голосов
/ 08 ноября 2019

вы можете использовать ссылку на компонент <ngx-mat-select-search> в своем тесте следующим образом:

component.matSelectSearch.onInputChange('c');

https://github.com/bithost-gmbh/ngx-mat-select-search/blob/d19c777ded98457cbdd4be476246ae96c52d7f02/src/app/mat-select-search/mat-select-search.component.spec.ts#L348-L349

в качестве альтернативы вам нужно будет правильно запустить событие с цельюустановите в поле ввода и установите d.value = 'my search value', см. также https://github.com/bithost-gmbh/ngx-mat-select-search/blob/d19c777ded98457cbdd4be476246ae96c52d7f02/src/app/mat-select-search/mat-select-search.component.html#L25

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...