我最近升级了一个 Angular 8 应用程序以使用更新版本的 Karma 和相关包(从“karma”:“~4.0.0”升级到“karma”:“~4.4.1”)。许多以前运行良好的单元测试在升级后开始间歇性地失败,并出现以下错误。失败主要出现在具有多个描述块的规范文件中,这些描述块使用了被测试组件的相同实例。我进行了代码更改,以便实例不会在描述套件之间共享,并在 beforeEach 函数中添加了 jasmine.DEFAULT_TIMEOUT_INTERVAL 的设置。这些变化大大减少了故障。但是,Jenkins 管道中的一两个测试仍可能会间歇性地失败。在本地运行不会导致超时。错误和样本测试如下。正如你所看到的茉莉花的价值。undefinedms
升级包
"karma": "~4.4.1",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~2.1.1",
"karma-jasmine": "~3.1.1",
"karma-jasmine-html-reporter": "^1.5.2",
运行测试
ng "test" "test-lib" "--browsers=ChromeHeadlessNoSandbox"
错误:
Error: Timeout - Async function did not complete within undefinedms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL) at <Jasmine>
样品测试:
import { async, TestBed } from '@angular/core/testing';
import { MyTestModule } from './my-test.module';
describe('MyTestModule', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [MyTestModule]
}).compileComponents();
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
}));
it('should create', () => {
expect(MyTestModule).toBeDefined();
});
});