Объект модульного тестирования с картой

#angular #unit-testing #jasmine

Вопрос:

Я пишу модульный тест по предмету, но, похоже, я не достигаю ожидаемого результата.

 ngOnInit() {
   const length = this.searchTerm$.pipe(
   filter((searchTerm: string) => !isNil(searchTerm)),
   filter((searchTerm: string) => searchTerm.length < 3),
   tap(() => (this.emptyMessage = 'Please input at least 3 characters')),
   map(() => [] as String[]),
  );
}
 

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

 it('should return string following the provision of search term', () => {
   const searchTerm = 'A';
   component.ngOnInit();
   component['searchTerm

Теперь я даже не уверен, правильно ли я поступаю, чтобы получить ответ, как ожидалось, с точки зрения длины или пустой строки


Комментарии:

1. Похоже , вы пытаетесь протестировать встроенный вами наблюдаемый конвейер ngOnInit , но этот наблюдаемый хранится в локальном var length , поэтому вам нужно будет подписаться length , а не searchTerm$ выполнить этот канал. И поскольку ваш тест не может получить доступ length , вам нужно будет назначить этот конвейер члену класса, а не локальному var, и подписаться на этого члена класса в своем тесте.

].subscribe((val) => {
expect(val).toBe('A'); // here i want to somehow check the length or either the error message
//ADD MORE EXPECTATIONS HERE
});
component['searchValueТеперь я даже не уверен, правильно ли я поступаю, чтобы получить ответ, как ожидалось, с точки зрения длины или пустой строки

Комментарии:

1. Похоже , вы пытаетесь протестировать встроенный вами наблюдаемый конвейер ngOnInit , но этот наблюдаемый хранится в локальном var length , поэтому вам нужно будет подписаться length , а не searchTerm$ выполнить этот канал. И поскольку ваш тест не может получить доступ length , вам нужно будет назначить этот конвейер члену класса, а не локальному var, и подписаться на этого члена класса в своем тесте.

].next(searchTerm);
}
Теперь я даже не уверен, правильно ли я поступаю, чтобы получить ответ, как ожидалось, с точки зрения длины или пустой строки

Комментарии:

1. Похоже , вы пытаетесь протестировать встроенный вами наблюдаемый конвейер ngOnInit , но этот наблюдаемый хранится в локальном var length , поэтому вам нужно будет подписаться length , а не searchTerm$ выполнить этот канал. И поскольку ваш тест не может получить доступ length , вам нужно будет назначить этот конвейер члену класса, а не локальному var, и подписаться на этого члена класса в своем тесте.