Я пытаюсь протестировать функцию, которая возвращает наблюдаемый rx js, но я не могу на него подписаться. Ни один из методов подписки, которые я пробовал, не работает.
"rxjs": "6.5.4","@angular/core": "9.0.1"
Функция, которую я пытаюсь проверить:
isNameValid(c: AbstractControl) {
const searchResult = this.roles.filter((elem: any) => elem.name?.toLowerCase() === c.value?.toLowerCase());
if (searchResult.length > 0) {
c.get('name')?.setErrors({ nameTaken: true });
return of({ matchError: 'nameTaken' });
}
return of(true);
}
test:
it('should return invalid error if supplied name is taken', () => {
const nameControl = new FormControl(mock[0].name);
const isValid = component.isNameValid(nameControl);
isValid.subscribe
({
next: (result: any) => {
console.log(result);
},
error: (err: any) => {
console.log(err);
},
complete: () => {
console.log('complete');
}
});
});
Каков правильный синтаксис подписки на наблюдаемое, возвращаемое isNameValid
? Прямо сейчас, с вставленным синтаксисом (или любым другим, что я пробовал) я не могу получить безошибочный способ подписки.
Должен ли я написать тест по-другому?
Ошибка, которую я получаю это:
Expected 2-3 arguments, but got 1.ts(2554)
Observable.d.ts(51, 39): An argument for 'error' was not provided.
Я также пытался:
isValid.subscribe(response => {console.log(response})
, который дает ту же ошибку.