我最近有一个企业项目要为其编写单元测试。该应用程序确实非常庞大。它有一个大的注射三口。在设置测试时,我花了半天的时间仅模拟注入的服务。问题是,我正在测试的服务具有n
个注入服务的数量,其中每个注入的服务又具有n
个注入服务的数量,并且列表继续增加到无限数量。目前,我只是通过创建伪造的类来嘲笑它们,但是再次,为每个伪造的类编写伪造的方法在该项目中是一项非常耗时的工作。 (主要是因为每个注入的服务在构造函数中都有大量的订阅)。
我当前的测试设置:
class FrameStateServiceStub {
public changedCurrentFrame: Observable<LayerId> = EMPTY;
public changedAvailableFrames: Observable<LayerId> = of("");
public getCurrentFrame(layerId: LayerId): Frame {
return frame;
}
public getAvailableFrames(layerId: LayerId): Frame[] {
return [frame];
}
}
class LoadingIndicatorServiceStub {
}
describe("DisplayService", () => {
const frameStateServiceStub = new FrameStateServiceStub();
const loadingIndicatorServiceStub = new LoadingIndicatorServiceStub();
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
DisplayService,
{provide: FrameStateService, useValue: frameStateServiceStub},
{provide: LoadingIndicatorService, useValue: loadingIndicatorServiceStub},
...
]
});
});
});
我想知道是否有更简单(更省时)的方法?
答案 0 :(得分:0)
以下是您可以遵循的最佳做法:
import { MockFrameStateService } from '../some/path1';
import { MockLoadingIndicatorService } from '../some/path2';
...
describe("DisplayService", () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
DisplayService,
{provide: FrameStateService, useClass: MockFrameStateService },
{provide: LoadingIndicatorService, useClass: MockLoadingIndicatorService},
...
]
});
});
});