Тестирование углового приложения с большим количеством закачанных сервисов - PullRequest
0 голосов
/ 01 июля 2019

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

Мне интересно, есть ли более простой (менее трудоемкий) способ сделать это?

...