我在Jasmine中编写了一个测试,以在某项服务存在任何类型的错误时显示警报。有问题的代码存在于组件中,本质上是显示警报的其他代码。
我尝试了多种方法,从提供带有“ GET”的请求到提供api路径的URI,然后在其上使用刷新。我已经检查了有和没有whenStable(),但是没有运气。
it('should show alert when an error for service exists', () => {
spyOn(alertService, 'showAlert').and.callThrough();
spyOn(someService, 'getStuff').and.returnValue(new Error());
const input = fixture.debugElement.query(By.css('#search'));
input.nativeElement.value = 'something';
input.nativeElement.dispatchEvent(new Event('input'));
fixture.whenStable().then(() => {
expect(alertService.showAlert).toHaveBeenCalled();
});
});
我希望在出现错误时显示警报。该测试通过,但是如果我添加一个'.not.toHaveBeenCalled()',则该测试也将通过。堆栈跟踪不会引发错误,但是会显示“错误:'未处理的承诺拒绝:',':希望得到间谍,但得到功能。”。
您看到在我之前的逻辑中我应该纠正的任何突出之处吗?
请澄清一下,有问题的代码在组件内的ngOnInit中,并且是从服务接收“填充”的例外。