我尝试创建与我的AppLoaderService
匹配的虚假服务,以对我的Angular应用程序进行业力测试。如何使用Karma为角度测试创建假服务
我有一个服务,它处理装载程序在我的应用程序的可见性状态。它在组件中使用这种方式:
- 主要成分订阅加载器的状态显示或不装载机
- 子组件和其他服务可以触发
emitChange
功能在服务改变可见性状态
这里的服务:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Rx';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class AppLoaderService {
private isLoaderVisible = new BehaviorSubject<boolean>(false);
changeLoaderState$ = this.isLoaderVisible.asObservable();
emitChange(state: any) {
this.isLoaderVisible.next(state);
}
}
事实是这样的服务将随着时间的推移被球队改变。
我并不在意测试AppLoaderService的逻辑在组件测试级别“工作”的事实。我只希望能够在组件级别测试对服务的订阅(对于主要组件)并返回初始服务值,并且在组件生命中的某个时刻触发了该服务。
所以为了不依赖于服务本身,也许我可以存根此服务的话,在我的组件测试,可以使用该存根具有:
providers: [
{provide: AppLoaderService, useClass: AppLoaderServiceStub}
]
但我很难界定一个适当的存根,而不用重写整个服务。
你有什么想法我可以做到这一点?特别是我的组件之一是订阅changeLoaderState$
。
什么是你想实现 – Aravind
创建一个假的服务,我来代替真正的一呼之不应依赖于inmy的业力部件测试 – BlackHoleGalaxy
业务逻辑测试? – Aravind