Angular 抛出错误的jasmine SpyOn服务调用会导致测试失败

Angular 抛出错误的jasmine SpyOn服务调用会导致测试失败,angular,jasmine,karma-jasmine,Angular,Jasmine,Karma Jasmine,我想从我的组件测试以下方法: mymethod(){ this.myservice.dostuff().subscribe((数据:any)=>{ console.log(数据) 这个。通过=正确 },err=>{ console.log(错误) 这个。通过=错误 }) } 这是我写的测试: 它('如果抛出错误'),fakeAsync(()=>{ spyOn(我的服务,“dostuff”)。和.throwError(“错误”); fixture.detectChanges() compone

我想从我的组件测试以下方法:

mymethod(){
this.myservice.dostuff().subscribe((数据:any)=>{
console.log(数据)
这个。通过=正确
},err=>{
console.log(错误)
这个。通过=错误
})
}
这是我写的测试:


它('如果抛出错误'),fakeAsync(()=>{
spyOn(我的服务,“dostuff”)。和.throwError(“错误”);
fixture.detectChanges()
component.mymethod()
勾选(1)
expect(myservice.dostuff).tohavebeincall();
expect(myservice.dostuff).tothrower(“错误”);
expect(component.passed).toBe(false);
刷新()
}));
但我肯定遗漏了什么,因为当我运行测试时,它失败了,并显示以下消息: 登录失败时的MyComponent 错误:错误

您应该使用它来模拟服务遇到异常时发生的情况。这将触发预期的错误回调

spyOn(myservice, 'dostuff').and.returnValue(throwError('someError'));
您的服务将返回一个可观察到的结果。正如您目前所写的,服务没有返回任何内容—它只是抛出一个异常。通过使用
throwError
returnValue
可以返回一个可观察值,该值立即抛出,从而触发预期的回调

spyOn(myservice, 'dostuff').and.returnValue(throwError('someError'));
您应该使用来模拟服务遇到异常时发生的情况。这将触发预期的错误回调

spyOn(myservice, 'dostuff').and.returnValue(throwError('someError'));
您的服务将返回一个可观察到的结果。正如您目前所写的,服务没有返回任何内容—它只是抛出一个异常。通过使用
throwError
returnValue
可以返回一个可观察值,该值立即抛出,从而触发预期的回调

spyOn(myservice, 'dostuff').and.returnValue(throwError('someError'));

好的,这更进一步,但我仍然得到以下错误消息:“预期函数将抛出错误。”断言服务抛出异常的那一行是不正确的。您的服务未引发异常。它返回一个发出错误的可观察对象。谢谢,现在就知道了。好的,这更进一步了,但我仍然收到以下错误消息:“预期函数将抛出错误。”断言服务抛出异常的那行代码是不正确的。您的服务未引发异常。它正在返回一个发出错误的可观测值。谢谢,现在知道了。