Jasmine 错误:超时-未在未定义的DMS中完成异步函数

Jasmine 错误:超时-未在未定义的DMS中完成异步函数,jasmine,karma-jasmine,karma-runner,karma-chrome-launcher,Jasmine,Karma Jasmine,Karma Runner,Karma Chrome Launcher,我最近升级了Angular 8应用程序,以使用较新版本的Karma和相关软件包(从“Karma”:“~4.0.0”升级到“Karma”:“~4.4.1”)。在升级后,许多以前工作正常的单元测试开始间歇性失败,出现以下错误。失败主要发生在spec文件中,这些文件中有多个描述块,这些描述块使用了被测试组件的同一实例。我修改了代码,这样实例就不会在描述套件中共享,并在beforeach函数中添加了jasmine.DEFAULT\u TIMEOUT\u INTERVAL的设置。这些变化大大减少了失败。然

我最近升级了Angular 8应用程序,以使用较新版本的Karma和相关软件包(从“Karma”:“~4.0.0”升级到“Karma”:“~4.4.1”)。在升级后,许多以前工作正常的单元测试开始间歇性失败,出现以下错误。失败主要发生在spec文件中,这些文件中有多个描述块,这些描述块使用了被测试组件的同一实例。我修改了代码,这样实例就不会在描述套件中共享,并在beforeach函数中添加了jasmine.DEFAULT\u TIMEOUT\u INTERVAL的设置。这些变化大大减少了失败。然而,在Jenkins管道中,一个或两个测试仍可能间歇性失败。本地运行不会导致超时。错误和样本测试如下。正如您所见,jasmine.DEFAULT\u TIMEOUT\u INTERVAL的值在测试中设置,但仍然会报告错误
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",
运行测试

"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();
    });
});

在我的公司里,我们几乎一年都在面临这个问题。超时是完全随机的,当我们排除失败的测试时,一些其他测试将在超时后失败。我们已经投入了大量的时间来寻找问题的根本原因,但还没有找到真正的原因。在我的公司,我们面临这个问题已经将近一年了。超时是完全随机的,当我们排除失败的测试时,一些其他测试将在超时后失败。我们已经投入了大量的时间来寻找问题的根源,但还没有找到问题的真正原因。