Угловой модульный тест: не удается разрешить все параметры для компонента
Итак, я пытался выяснить это некоторое время, и все, что я могу найти в Интернете (в отношении сообщения об ошибке в заголовке), относится к циклическим зависимостям во время 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 я получаю ту же ошибку, что и выше, при запуске тестов.
Любые советы приветствуются!