首页 > 解决方案 > 带有.subscribe误解的Angular UNIT测试方法

问题描述

我最近开始学习 Angular 测试,并面临对 UNIT 测试概念的误解。例如,我有一个带有 2 个按钮的对话框:确认删除和取消。当用户单击确认删除按钮时,将调用 http-service 方法并关闭对话框。听起来很简单。这是代码:

confirmDelete() {
   this.httpService.delete(item)
       .subscribe(() => this.dialogRef.close(),
                  (err) => this.message = 'Some text');
} 

我对这个功能的测试是:

it('should call service delete method and close the dialog', async( () => {
   spyOn(dialogRef, 'close'); // I have mockDialogRef;
   component.confirmDelete();
   fixture.whenStable().then(() => {
      fixture.detectChanges();
      expect(deleteSpy.calls.any().toBe(true)); // Spy on delete method
      expect(dialogRef.close).toHaveBeenCalled();
   });
}));

它工作得很好。似乎是删除方法已被调用并且对话框已关闭。但我的问题是。我们应该在这些方法中测试什么?我们应该总是测试订阅方法中的东西还是只调用服务方法?如果服务器返回错误,我应该在这里测试吗?所以,..对不起愚蠢的问题,但我真的很困惑。希望你们能帮助我(

标签: angularunit-testing

解决方案


推荐阅读