【问题标题】:Error: Timeout - Async function did not complete within undefinedms错误:超时 - 异步函数未在 undefinedms 内完成
【发布时间】:2020-03-05 14:10:03
【问题描述】:

我最近升级了一个 Angular 8 应用程序以使用更新版本的 Karma 和相关软件包(从“karma”:“~4.0.0”升级到“karma”:“~4.4.1”)。许多以前运行良好的单元测试在升级后开始间歇性地失败,并出现以下错误。失败主要发生在具有多个描述块的规范文件中,这些描述块使用了被测试组件的相同实例。我进行了代码更改,以便实例不会在描述套件之间共享,并在 beforeEach 函数中添加了 jasmine.DEFAULT_TIMEOUT_INTERVAL 的设置。这些变化大大减少了故障。但是,Jenkins 管道中的一两个测试仍可能会间歇性地失败。在本地运行不会导致超时。错误和样本测试如下。可以看到 jasmine.DEFAULT_TIMEOUT_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",

运行测试

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

【问题讨论】:

  • 在我的公司中,我们面临这个确切的问题已经快一年了。超时是完全随机的,当我们排除失败的测试时,其他一些测试将因超时而失败。我们投入了大量时间来寻找根本原因,但尚未找到真正导致问题的原因。

标签: jasmine karma-jasmine karma-runner karma-chrome-launcher


【解决方案1】:

你需要调用 done();万众瞩目的功能; 喜欢:

it('getHeroes should return value from array', (done: DoneFn) =>{
    let heroes: Hero[] = [
        { id: 11, name: 'Dr Nice' },
        { id: 12, name: 'Narco' },
        { id: 13, name: 'Bombasto' },
        { id: 14, name: 'Celeritas' },
        { id: 15, name: 'Magneta' },
        { id: 16, name: 'RubberMan' },
        { id: 17, name: 'Dynama' },
        { id: 18, name: 'Dr IQ' },
        { id: 19, name: 'Magma' },
        { id: 20, name: 'Tornado' }
    ];
    expect(service.getHeroes()).toEqual(heroes);
    done();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    相关资源
    最近更新 更多