我有一个非常简单的 AppComponent 和一个非常简单的测试,但它最近失败了一次:
[1A [2K [31mChrome Headless 91.0.4472.124(Windows 10)AppComponent 应呈现标题 FAILED [39m Uncaught [object Object] throwed Chrome Headless 91.0.4472.124(Windows 10):执行 9 of 12[31m(1 FAILED)[39m( 0 秒 / 0.28 秒)Chrome Headless 91.0.4472.124(Windows 10)AppComponent 应呈现标题 FAILED Uncaught [object Object] 抛出
如果它有任何区别,这作为我基于 Jenkins 的 CI 的一部分失败了。并且简单地重新运行相同的代码通过了所有测试。
这是测试:
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [AppComponent],
}).compileComponents();
}));
it('should render title', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('h1').textContent).toContain(
'My Angular Store'
);
});
});
AppComponent.html 的内容:
<mat-toolbar color="primary">
<h1>
My Angular Store
</h1>
<button mat-button routerLink="/">Home</button>
<button mat-button routerLink="/maps">Maps</button>
<button mat-button routerLink="/about">About</button>
<button mat-button routerLink="/pingball">JS - Pingball</button>
<button mat-button routerLink="/hex">TS - Hex</button>
<button mat-button routerLink="/arena">Arena</button>
</mat-toolbar>
<router-outlet></router-outlet>
应用组件.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'angular-example';
}
同样在过去,我还看到其他早期通过的测试随机失败。
为什么会这样以及如何防止随机故障(尤其是在没有代码更改的情况下)。
PS 我在开发方面拥有相当丰富的经验,并且知道在具有数千次测试和数十万行代码的复杂系统中,您可能会有不稳定的行为。但是我不能接受这个有 13 个绝对独立测试的非常基本的项目中的片状