Угловой модульный тест: не удается разрешить все параметры для компонента

Итак, я пытался выяснить это некоторое время, и все, что я могу найти в Интернете (в отношении сообщения об ошибке в заголовке), относится к циклическим зависимостям во время DI - но я на 99% уверен, что это не моя проблема,

Итак, здесь идет - я получаю следующую ошибку при запуске моего теста:

Error: Can't resolve all parameters for AssetGalleryCardComponent: ([object Object], [object Object], ?)

Компонент CTOR:

constructor(@Inject('assetService') private assetService: AssetService,
            @Inject('assetValidation') private assetValidation: AssetValidationService,
            @Inject(AssetGalleryService) private assetGalleryService: AssetGalleryService) { }

Тест-код:

import { AssetGalleryService } from './../asset-gallery.service';
import { AssetCardCaptionDirective } from './../../asset-card-caption.directive';
import { MaterialModule } from '@angular/material';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { AssetGalleryCardComponent } from './asset-gallery-card.component';

describe('asset-gallery-card.component', () => {
    let component: AssetGalleryCardComponent;
    let fixture: ComponentFixture<AssetGalleryCardComponent>;

    beforeEach(() => {
        TestBed.configureTestingModule({
            imports: [
                MaterialModule
            ],
            declarations: [AssetCardCaptionDirective, AssetGalleryCardComponent],
            providers: [
                {
                    provide: AssetGalleryService,
                    useValue: {}
                },
                {
                    provide: 'assetValidation',
                    useValue: {}
                },
                {
                    provide: 'assetService',
                    useValue: {}
                }
            ]
        });

        fixture = TestBed.createComponent(AssetGalleryCardComponent);
        component = fixture.componentInstance;
    });

    it('should be defined', () => {
        expect(component).toBeDefined();
    });
});

Я попытался удалить настройку тестового модуля и добавить что-то, как того требует бегун, и только когда я добавляю макет для AssetGalleryService как последний бит, ошибки начинают выбрасывать.

Как видите, я смоделировал все зависимости, так как текущее состояние теста ничего не требует от сервисов.

Там нет импорта барреля (я читал, что может привести к этой проблеме)

Единственное, что импортируется дважды AssetGalleryService который импортируется как в тестовый файл, так и в файл компонента. Если я переключаю порядок импорта в тестовом файле, я получаю эту ошибку:

Error: No provider for $injector!

Что, вероятно, связано с тем, что я запускаю гибридное приложение? 2 из услуг для компонента являются услугами AngularJS.

Изменить: если я добавлю forwardRef(() => ... ) к @Inject(AssetGalleryService)... в компоненте CTOR я получаю ту же ошибку, что и выше, при запуске тестов.

Любые советы приветствуются!

0 ответов

Другие вопросы по тегам