Недавно я получил корпоративный проект для написания модульных тестов. Приложение действительно огромное. У него большая инъекция три. Когда я настраивал тесты, мне потребовалось полдня, чтобы высмеивать только внедренные сервисы. Проблема в том, что у службы, которую я тестирую, есть 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},
...
]
});
});
});
Мне интересно, есть ли более простой (менее трудоемкий) способ сделать это?