角度配置服务会导致测试错误

时间:2018-11-19 09:36:23

标签: angular typescript testing config karma-runner

我有一个配置初始化服务,该服务会在应用启动后立即运行(从.json导入服务器URI)。

@Injectable({
    providedIn: 'root'
})
export class ConfigInitService {

    static settings: UriConfig;

    load() {
    }

    constructor(
        private http: HttpClient
    ) {
        this.http.get('assets/config/uris.json').subscribe((file: UriConfig) => {
            ConfigInitService.settings = file;
        });
    }
}

这是我的app.module

providers: [
        ConfigInitService,
        {
            provide: APP_INITIALIZER,
            useFactory: () => initializeApp,
            deps: [ConfigInitService],
            multi: true
        },
...
})
export class AppModule {
}

export function initializeApp(uriConfig: ConfigInitService) {
    return () => uriConfig.load();
}

问题是,当我运行测试时,它们有错误(有时没有),无法读取socket的属性undefined。套接字是该json文件的属性。同时应用无法正常运行,我的测试无法正常工作。诀窍在于,此错误会在测试运行过程中动态出现。这意味着,每当我运行测试时,发出此错误更改的一个或多个组件。而且,有时会在甚至不使用该服务或其依赖服务的组件中打印出错误(该服务只是具有从加载的配置返回不同字符串的函数)。

此外,我还有另一个具有相同初始化服务的应用程序,并且这些测试工作正常。

这里是打印PhantomJS的方式

  

{       “ message”:“在afterAll \ nTypeError中引发错误:undefined不是对象(正在评估   抛出了'config_init_service_1.ConfigInitService.settings.socket')“,       “ str”:“在afterAll \ nTypeError中引发了一个错误:未定义不是对象(正在评估   抛出了'config_init_service_1.ConfigInitService.settings.socket')“}

0 个答案:

没有答案