jasmine beforeEach和angular TestBed.configureTestingModule,同步与否?

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

我有一个简单的配置简单的测试:

fdescribe("A spec", function() {
    let service: UserService;

    beforeEach(()=>{
        TestBed.configureTestingModule({ providers: [UserService] });
    });

    it('should use UserService', () => {
        service = TestBed.get(UserService);
        expect(service.getValue()).toBe('real value');
    });
});

它工作正常,但如果我只想删除TestBed.configureTestingModule以外的beforeEach

fdescribe("A spec", function() {
    let service: UserService;

    TestBed.configureTestingModule({ providers: [UserService] });

    it('should use UserService', () => {
        service = TestBed.get(UserService);
        expect(service.getValue()).toBe('real value');
    });
});

它会抛出一个错误:

NullInjectorError: No provider for UserService

那是因为TestBed在UserService下找不到任何服务,因为配置还没有准备好。

所以,你可以看到我使用beforeEach作为同步操作,我想TestBed.configureTestingModule它不同步。

我错过了什么?如果不提供asyncdone()选项,beforeEach如何运作?

或问题本身在TestBed.configureTestingModule中?

我不确定这两个如何一起工作。

谁能解释一下?

angular jasmine
1个回答
0
投票

显然需要在每个TestBed.configureTestingModule声明中调用it。否则,配置将每次重置。这就是为什么我们需要在beforeEach中调用它,尽管逻辑对我来说似乎很愚蠢。

© www.soinside.com 2019 - 2024. All rights reserved.