【发布时间】:2020-04-26 19:46:33
【问题描述】:
我是 Angular 的新手,我仍在尝试弄清楚它是如何工作的。我目前无法测试依赖于返回Promise 的服务的组件。我正在测试的函数结构如下:
success: boolean;
borrowBook() {
this.bookService.borrow(this.selectedBook.id)
.then(() => {
this.success = true;
})
.catch((error: BorrowingError) => {
this.success = false;
});
}
现在,我不确定上面的代码是否被认为是惯用的,但这就是我编写代码的方式。在我的单元测试中,我使用jasmine.createSpyObj 函数模拟了bookService,并将存根定义如下:
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();
}));
我的印象是,甚至在相应地处理 Promise 之前就已经检查了期望。
【问题讨论】:
标签: javascript angular unit-testing rxjs jasmine