我需要为以下内容编写单元测试DataService
,
@Injectable()
export class DataService {
constructor(private config: ConfigService, private http: HttpClient) {
}
.....
someMethod(){
let apiUrl = this.config.get('api').url; // LINE 1
}
}
ConfigService
被注入的有DataService
一个load
从 json 文件获取配置的函数。该load
函数将在应用程序初始化时调用。
export function configServiceFactory(config: ConfigService) {
return () => config.load();
}
...
providers: [
ConfigService,
{
provide: APP_INITIALIZER,
useFactory: configServiceFactory,
deps: [ConfigService],
multi: true
}
]
这是data-service.spect.ts
文件的一部分,
...
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule
],
providers: [DataService, ConfigService]
});
mock = TestBed.get(HttpTestingController);
service = TestBed.get(DataService);
});
....
所以当我运行测试时,LINE 1
我知道这this.config.get('api')
是未定义的。我可以理解这是因为ConfigService
没有从 JSON 加载数据。那么现在我怎样才能让注入的服务在单元测试期间也进行异步调用呢?