我有一个配置初始化服务,该服务会在应用启动后立即运行(从.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')“}