angular / angular/angular-cli

Unhandled promise rejections aren't properly reported in tests

未关闭
#30,861 5 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
area: @angular-devkit/build-angular devkit/build-angular:karma needs: investigation
主要语言
TypeScript
星标
27k
派生
11.8k
平均合并
14 小时 23 分钟
30 天内合并 PR
162

描述

### Which @angular/* package(s) are the source of the bug?

Don't known / other

### Is this a regression?

Yes

### Description

In an Angular project that uses zone.js, unhandled promise rejections are not reported. In a zoneless Angular project, they are reported twice.

Steps to reproduce:

1. Create a new Angular project.
2. Paste the code below into a spec file.
3. `npm t`

```
it('triggers an unhandled rejection', function(done) {
Promise.reject(new Error('nope'));

// Make sure the unhandled rejection event has plenty of time to fire before
// Jasmine finishes running. This helps distinguish between timing issues
// (event is firing a bit later than usual) and the event not firing at all.
setTimeout(done, 1000);
});
```

Expected result: The spec should fail with a single "Unhandled promise
rejection: Error: nope" error.

Observed:
* If the project was set up zoneless, the spec fails with two copies of the expected error.
* Otherwise, the spec passes.

### Please provide a link to a minimal reproduction of the bug

https://github.com/sgravrock/ng-unhandled-rejection

### Please provide the exception or error you saw

```true

```

### Please provide the environment you discovered this bug in (run `ng version`)

```true
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/

Angular CLI: 20.1.5
Node: 20.19.0
Package Manager: npm 10.8.2
OS: darwin arm64

Angular: 20.1.6
... common, compiler, compiler-cli, core, forms
... platform-browser, router

Package Version
------------------------------------------------------
@angular-devkit/architect 0.2001.5
@angular-devkit/core 20.1.5
@angular-devkit/schematics 20.1.5
@angular/build 20.1.5
@angular/cli 20.1.5
@schematics/angular 20.1.5
rxjs 7.8.2
typescript 5.8.3
zone.js 0.15.1
```

### Anything else?

_No response_

贡献指南

打开贡献指南

调研方向

在新的 Angular 项目中使用提供的 spec 复现该问题,并运行 `npm t`,比较 zoneless 和 zone.js 配置。相关项目文件未命名;请将 https://github.com/sgravrock/ng-unhandled-rejection 中的测试设置和最小复现作为切入点。两种配置下 spec 都恰好报告一个未处理的 rejection,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
angular, typescript
领域
testing
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
42/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。