У меня несколько неприятная проблема с Jest и Angular.
Я совершенно не знаю почему, но каждый раз, когда я пытаюсь внедрить даже простейший сервис, это вызывает шутку пожаловаться:
FAIL apps/simplescrum/src/app/app.component.spec.ts
● AppComponent › should create the app
Can't resolve all parameters for HeaderComponent: (?, [object Object]).
at syntaxError (../../../packages/compiler/src/util.ts:108:17)
at CompileMetadataResolver._getDependenciesMetadata (../../../packages/compiler/src/metadata_resolver.ts:991:27)
at CompileMetadataResolver._getTypeMetadata (../../../packages/compiler/src/metadata_resolver.ts:870:20)
at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (../../../packages/compiler/src/metadata_resolver.ts:375:18)
at CompileMetadataResolver.loadDirectiveMetadata (../../../packages/compiler/src/metadata_resolver.ts:226:11)
at ../../../packages/compiler/src/jit/compiler.ts:137:36
at Array.forEach (<anonymous>)
at ../../../packages/compiler/src/jit/compiler.ts:135:65
at Array.forEach (<anonymous>)
at JitCompiler._loadModules (../../../packages/compiler/src/jit/compiler.ts:132:71)
at JitCompiler._compileModuleAndAllComponents (../../../packages/compiler/src/jit/compiler.ts:117:32)
at JitCompiler.compileModuleAndAllComponentsAsync (../../../packages/compiler/src/jit/compiler.ts:69:33)
at CompilerImpl.compileModuleAndAllComponentsAsync (../../../packages/platform-browser-dynamic/src/compiler_factory.ts:69:27)
at TestingCompilerImpl.compileModuleAndAllComponentsAsync (../../../../packages/platform-browser-dynamic/testing/src/compiler_factory.ts:59:27)
at TestBedViewEngine.compileComponents (../../../../packages/core/testing/src/test_bed.ts:375:27)
at Function.TestBedViewEngine.compileComponents (../../../../packages/core/testing/src/test_bed.ts:159:25)
at src/app/app.component.spec.ts:20:8
at ZoneDelegate.invoke (../../node_modules/zone.js/dist/zone.js:386:30)
at AsyncTestZoneSpec.onInvoke (../../node_modules/zone.js/dist/async-test.js:102:47)
at ProxyZoneSpec.onInvoke (../../node_modules/zone.js/dist/proxy.js:114:43)
at ZoneDelegate.invoke (../../node_modules/zone.js/dist/zone.js:385:36)
at Zone.runGuarded (../../node_modules/zone.js/dist/zone.js:154:51)
at runInTestZone (../../node_modules/zone.js/dist/async-test.js:224:33)
at ../../node_modules/zone.js/dist/async-test.js:162:21
at ZoneDelegate.invoke (../../node_modules/zone.js/dist/zone.js:386:30)
at ProxyZoneSpec.onInvoke (../../node_modules/zone.js/dist/proxy.js:117:43)
at ZoneDelegate.invoke (../../node_modules/zone.js/dist/zone.js:385:36)
at Zone.run (../../node_modules/zone.js/dist/zone.js:143:47)
Когда моя инъекция зависимости выглядит так:
constructor(private appStateService: AppStateService,
public breakpointService: BreakpointService) {
}
обе эти службы @Injectable({providedIn: 'root'})
Это также происходит при загрузке служб из материала angular, который говорит мне, что это, возможно, больше моя шутливая конфигурация, чем мой код.
constructor(private breakpointObserver: BreakpointObserver) {
}
Интересно, что проблем не возникает, когда я вставляю службы как forwardRefs
constructor(@Inject(forwardRef(() => BreakpointObserver)) private breakpointObserver: BreakpointObserver) {
}
У кого-нибудь есть мысли?
Репо с кодом можно найти здесь https://github.com/geometricpanda/simple-scrum