0

我有一个非常简单的 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 个绝对独立测试的非常基本的项目中的片状

4

0 回答 0