我正在使用此要点在应用程序启动期间读取配置文件.这工作正常但在进行单元测试时我得到错误Cannot read property 'SomeProperty' of null.
我已经添加了提供程序以进行测试
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LoginComponent ],
imports: [ReactiveFormsModule, RouterTestingModule, HttpModule],
providers: [AuthService,
SettingsService,
AppConfig,
{
provide: APP_INITIALIZER,
useFactory: initConfig,
deps: [AppConfig],
multi: true
},
]
})
.compileComponents();
}));
Run Code Online (Sandbox Code Playgroud)
任何指针来解决这个问题?提前致谢.
看起来 Angular 在运行测试时如何处理 APP_INITIALIZER 存在问题(请参阅https://github.com/angular/angular/issues/24218)。
现在的解决方法是在每个之前调用它:测试
beforeEach(async () => {
// until https://github.com/angular/angular/issues/24218 is fixed
await TestBed.inject(ApplicationInitStatus).donePromise;
});
Run Code Online (Sandbox Code Playgroud)
对于角度 <9,请使用 TestBed.get(...) 代替。
小智 1
我在这样的事情上旋转了一段时间。最后,我只是在 APP_INITIALIZER 提供程序的“deps”中提供了服务的模拟,并确保它在单元测试中没有执行任何操作。
然后,您只需独立测试初始化程序和服务,我认为这是您能做的最好的事情。
| 归档时间: |
|
| 查看次数: |
1381 次 |
| 最近记录: |