#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
, но этот наблюдаемый хранится в локальном varlength
, поэтому вам нужно будет подписаться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
, но этот наблюдаемый хранится в локальном varlength
, поэтому вам нужно будет подписатьсяlength
, а неsearchTerm$
выполнить этот канал. И поскольку ваш тест не может получить доступlength
, вам нужно будет назначить этот конвейер члену класса, а не локальному var, и подписаться на этого члена класса в своем тесте.
].next(searchTerm);
}
Теперь я даже не уверен, правильно ли я поступаю, чтобы получить ответ, как ожидалось, с точки зрения длины или пустой строки
Комментарии:
1. Похоже , вы пытаетесь протестировать встроенный вами наблюдаемый конвейер
ngOnInit
, но этот наблюдаемый хранится в локальном varlength
, поэтому вам нужно будет подписатьсяlength
, а неsearchTerm$
выполнить этот канал. И поскольку ваш тест не может получить доступlength
, вам нужно будет назначить этот конвейер члену класса, а не локальному var, и подписаться на этого члена класса в своем тесте.