在Karma 4 / Angular 7中执行测试之前,等待注入服务的构造函数完成

问题描述 投票:1回答:1

我正在注入这样的服务:

it('name of test', inject([ Service], (hcs: Service) => {
    const pipe = new MyPipe(hcs);
    const expectedResult = ...
    //Here the constructor of the hcs-service has to be completet, otherwise the Pipe fails
    const result = pipe.transform(...);
    expect(result).toEqual(expectedResult);
}));

在开始执行管道的transform方法之前,我需要运行服务的构造函数。在运行时期间,这不是问题,因为此管道始终是对用户操作的反应。但是在我的测试中,它失败了,因为构造函数还没有运行。

什么是解决这个问题的好方法?

编辑:正如Arif在评论中指出的那样。问题是我的构造函数执行异步任务。谢谢 :)

angular karma-jasmine angular7
1个回答
1
投票

始终首先执行Object的构造函数。除非你有异步代码。

正如您在评论中提到的,这是您案例中的问题。

要等待测试异步功能完成,你必须使用fakeAsynctick

it('name of test', fakeAsync(inject([ Service], (hcs: Service) => {
    const pipe = new MyPipe(hcs);

    tick();

    const expectedResult = ...
    //Here the constructor of the hcs-service has to be completet, otherwise the Pipe fails
    const result = pipe.transform(...);
    expect(result).toEqual(expectedResult);
})));
© www.soinside.com 2019 - 2024. All rights reserved.