Я новичок в Angular и все еще пытаюсь понять, как все это работает. В настоящее время у меня возникают проблемы при тестировании компонента, который зависит от службы, которая возвращает Promise
. Функция, которую я тестирую, структурирована следующим образом:
success: boolean;
borrowBook() {
this.bookService.borrow(this.selectedBook.id)
.then(() => {
this.success = true;
})
.catch((error: BorrowingError) => {
this.success = false;
});
}
Теперь я не совсем уверен, считается ли что-то подобное приведенному выше кодом идиоматическим c, но именно так я и написал код. В моем модульном тесте я смоделировал bookService
, используя функцию jasmine.createSpyObj
, и определил заглушку следующим образом:
mockBookService.borrow.and.returnValue(Promise.resolve(testResult));
Однако мой тест не прошел, сказав, что component.success
не определен, когда я ожидал, что он быть правдивым Мой тест запрограммирован следующим образом:
it('test', async(() => {
mockBookService.borrow.and.returnValue(Promise.resolve(testResult));
//setup pre-conditions here...
component.borrowBook(();
expect(component.success).toBeTruthy();
}));
У меня сложилось впечатление, что ожидания проверяются еще до того, как Обещание будет обработано соответствующим образом.