首页 > 解决方案 > Angular SPA 的 Karma+Jasmine 测试在 AfterAll 中随机失败

问题描述

我们正在构建一个 Angular 单页应用程序。过去几周的一些提交导致 AfterAll 方法中出现随机测试失败,并显示以下错误消息:

AfterAll Uncaught TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable. thrown

该错误有时不会出现;在浏览器中查看 Karma 控制台时,任何规格都没有错误,除了这个。我很难找到错误的根源;我不确定如何为其获取正确的堆栈跟踪。我们没有定义任何 AfterAll(它必须是 Karma 运行的一些默认规范)。禁用或启用随机测试顺序不会影响随机失败。

我们使用的版本如下:

"karma": "^4.0.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "^1.2.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.2",
"karma-junit-reporter": "^1.2.0"

如何获得此错误的正确堆栈跟踪?随机出现什么问题?

标签: angularkarma-jasmine

解决方案


您可以使用fdescribe/xdescribe来缩小产生此问题的规范文件的范围。然后你可以使用 fit/xit 得到有问题的测试。

PS:您的规范文件中没有必要存在问题。有时,代码中的故障可能会导致此类错误。一旦你知道是哪个测试产生了这个错误,就会更容易发现潜在的问题。


推荐阅读