Angular 使用fakeasync时出错-但它在其他地方工作

Angular 使用fakeasync时出错-但它在其他地方工作,angular,jasmine,karma-jasmine,Angular,Jasmine,Karma Jasmine,我有一个令人难以置信的问题。我在两个不同的项目中测试了一些代码,都是在angular。在第一个项目中,测试工作正常,在第二个项目中,我得到以下错误 TypeError:无法读取未定义的属性“assertPresent” 我看到了这个问题,但他们讨论的所有解决方案都是导入zone.js和顺序等。然而,无论是在我的工作测试项目还是非工作测试项目中,我都没有显式导入zone.js 测试代码延迟测试http,因此需要fakeAsync使用勾选。这是测试两个项目中代码的测试: it('should thr

我有一个令人难以置信的问题。我在两个不同的项目中测试了一些代码,都是在angular。在第一个项目中,测试工作正常,在第二个项目中,我得到以下错误

TypeError:无法读取未定义的属性“assertPresent”

我看到了这个问题,但他们讨论的所有解决方案都是导入
zone.js
和顺序等。然而,无论是在我的工作测试项目还是非工作测试项目中,我都没有显式导入
zone.js

测试代码延迟测试http,因此需要
fakeAsync
使用
勾选
。这是测试两个项目中代码的测试:

it('should throw error if action failed`, fakeAsync(()=>{
    const mockGetActionResponse = {'action' : {'id' : mockActionId, state: 'Failed' }};
    
    service.doAction(mockContent).subscribe(
        () => {},
        err => expect(err).toEqual('Action Failed');
    );

    const postCall = httpTestingController.expectOne(url1);
    expect(postCall.request.method).toEqual('POST');
    expect(postCall.request.body).toEqual(mockContent);

    postCall.flush(mockPostActionResponse);

    tick(config.retryTime);

    const getCall = httpTestingController.expectOne(url2/mockActionId);
    expect(getCall .request.method).toEqual('Get');

    getCall.flush(mockGetActionResponse );
}));
现在在项目1中,它工作得很好,在项目2中,我得到了前面提到的错误。我在这两方面的进口量相同:

import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
import {fakeAsync, TestBed, tick} from '@angular/core/testing';
在我的
package.json
devdependency
中,我有以下相似之处:(为了方便起见,删除了此处的引号)

现在,在p2中,我更新了karma coverage,使其不再使用instabul,p1在p2不使用的地方使用electron,因此现在我也有以下区别:

karma-coverage-instabul-reporter: 3.0.3, // P1 only
karma-coverage: ^2.0.3, // p2 only
karma-electron: 6.3.1, // p1 only
karma-chrome-launcher: ~3.1.0 // p2 only 
karma-junit-reporter: ^2.0.1 //p2 only
类似的常规依赖项:
zone.js:0.11.1(p1)/^0.11.2(p2)

另一个可能值得注意的主要区别是p1是角度10,其中p2是角度11。 同样,代码和测试是一样的,所以我很难理解为什么在p2中会出现上述错误

任何潜在客户都会受到高度评价

多亏了github上的一篇文章,我发现P1有一个导入p2

test.ts
中,
karma.conf.js
所需并负责递归加载所有规范文件的文件缺少导入。将其添加到p2的
test.ts
解决了该问题

导入'zone.js/dist/zone testing'

karma-coverage-instabul-reporter: 3.0.3, // P1 only
karma-coverage: ^2.0.3, // p2 only
karma-electron: 6.3.1, // p1 only
karma-chrome-launcher: ~3.1.0 // p2 only 
karma-junit-reporter: ^2.0.1 //p2 only