【发布时间】:2019-05-06 22:34:31
【问题描述】:
我有一个问题?如何模拟包含静态变量的服务?
这是我的服务
@Injectable()
export class AppConfigService {
static settings: IAppConfig;
constructor(private http: HttpClient) {}
load() {
const jsonFile = `assets/config/config.${environment.name}.json`;
return new Promise<void>((resolve, reject) => {
this.http.get(jsonFile).toPromise().then((response: IAppConfig) => {
AppConfigService.settings = response as IAppConfig;
resolve();
}).catch((response: any) => {
reject(`Could not load file '${jsonFile}': ${JSON.stringify(response)}`);
});
});
}
}
这是我的单元测试代码:
describe('AppConfigService', () => {
let service: AppConfigService;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule
],
providers: [
{provide: AppConfigService, useClass: MockAppConfigService}
]});
service = TestBed.get(AppConfigService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
it('should ran load well', () => {
expect(service.settings)......;
});
我不能使用service.settings,因为settings是AppConfigService的静态成员……
【问题讨论】:
标签: angular unit-testing jasmine