Это мой первый ТАК вопрос, так что терпите меня. Я пишу юнит-тесты, чтобы проверить компоненты моего углового приложения. Я хочу создать компонент и утверждать, создан ли он с помощью шутки. У этого компонента есть инъекции зависимостей, которые мне нужно предоставить при создании экземпляра компонента для тестирования. Моя проблема заключается в том, что эти зависимости имеют больше зависимостей, и они имеют больше зависимостей. Поэтому, если я хочу внедрить эти сервисы, должен ли я указывать каждую и каждую зависимость в качестве провайдеров в тестовом файле спецификации?
Я уже пытался предоставить зависимости, но это утомительно, так как есть еще много зависимостей для этих зависимостей.
Это мой компонент.
export class CenToastrComponent implements OnInit, AfterViewInit, OnDestroy {
constructor(
readonly data: ToastData,
readonly ref: ToastRef,
private renderer: Renderer,
@Inject(TOAST_CONFIG_TOKEN) public toastConfig: ToastConfig
) {}
}
Это инъекция ToastRef.
export class ToastRef {
constructor(private readonly overlay: OverlayRef) {}
close() {
this.overlay.dispose();
}
}
и OverlayRef имеет много других DI в конструкторе.
Это мой подход к тестированию.
describe('CenToastrComponent', () => {
let component: CenToastrComponent;
let fixture: ComponentFixture<CenToastrComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [CenToastrComponent],
providers: [ToastData, ToastRef],
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(CenToastrComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
test('create the component', () => {
expect(component).toBeTruthy();
});
});
Но это не удалось, поскольку я не смог предоставить DI для ToastRef.
Извините, что больше не делюсь кодом, так как это частный проект.
Есть ли лучший способ сделать этот DI и тестирование более простым способом. Любая помощь приветствуется. Заранее спасибо.