由于未处理的承诺拒绝而导致测试失败

时间:2019-05-14 19:22:08

标签: angular typescript jasmine

我在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中,并且是从服务接收“填充”的例外。

0 个答案:

没有答案