angular - 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"
如何获得此错误的正确堆栈跟踪?随机出现什么问题?
解决方案
您可以使用fdescribe/xdescribe来缩小产生此问题的规范文件的范围。然后你可以使用 fit/xit 得到有问题的测试。
PS:您的规范文件中没有必要存在问题。有时,代码中的故障可能会导致此类错误。一旦你知道是哪个测试产生了这个错误,就会更容易发现潜在的问题。
推荐阅读
- javascript - Javascript购物车用加减按钮替换订单按钮
- python-3.x - 将 macos 更新到 10.15.5 后 Python 出现分段错误
- istio - 带有 https 的 Istio-ingressgateway - 连接被拒绝
- node.js - 如何在 Nestjs 中创建 HMAC-SHA1 哈希
- python - 保留python中元组列表中的唯一组合
- javascript - 如何使用动画移动画布上的元素?
- pyspark - spark.executor.cores vs spark.executor.instance 我应该增加哪一个?
- javascript - Redux:异步执行reducers?
- python - 将数组数组转换为单个数组
- swift - 如何实时更新 AKOperationGenerator 中的 Sporth 值?