Open
Description
🐛 Bug Report
Attempting to test components that inject a service imported from a namespace fails in Jest 27 / Angular 12.
To Reproduce
ng new my-app
- Install jest / jest-preset-angular
- Create a new folder, services.
- Create a file in that folder (my-service.ts) containing the following:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class MyService {
constructor() {
console.log('HELLO')
}
}
- Create a new file (index.ts) inside the services folder containing the following:
import * as Services from './my-service';
export { Services }
- Add
private myService: Services.MyService
to the constructor of app-component - Import Services in app-component.
- Try to run tests with
npx jest
Expected behavior
Tests run successfully
Link to repo (highly encouraged)
https://github.com/AgentEnder/ng-jest-issue-6097
Error log:
Can't resolve all parameters for AppComponent: (?).
at syntaxError (../packages/compiler/src/util.ts:108:17)
at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver._getDependenciesMetadata (../packages/compiler/src/metadata_resolver.ts:1010:27)
at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver._getTypeMetadata (../packages/compiler/src/metadata_resolver.ts:889:20)
at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver.getNonNormalizedDirectiveMetadata (../packages/compiler/src/metadata_resolver.ts:387:18)
at CompileMetadataResolver.Object.<anonymous>.CompileMetadataResolver.loadDirectiveMetadata (../packages/compiler/src/metadata_resolver.ts:238:41)
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.Object.<anonymous>.JitCompiler._loadModules (../packages/compiler/src/jit/compiler.ts:132:71)
at JitCompiler.Object.<anonymous>.JitCompiler._compileModuleAndAllComponents (../packages/compiler/src/jit/compiler.ts:117:32)
at JitCompiler.Object.<anonymous>.JitCompiler.compileModuleAndAllComponentsAsync (../packages/compiler/src/jit/compiler.ts:69:33)
at CompilerImpl.Object.<anonymous>.CompilerImpl.compileModuleAndAllComponentsAsync (../packages/platform-browser-dynamic/src/compiler_factory.ts:69:27)
at TestingCompilerImpl.Object.<anonymous>.TestingCompilerImpl.compileModuleAndAllComponentsAsync (../packages/platform-browser-dynamic/testing/src/compiler_factory.ts:59:27)
at TestBedViewEngine.Object.<anonymous>.TestBedViewEngine.compileComponents (../packages/core/testing/src/test_bed.ts:366:27)
at Function.Object.<anonymous>.TestBedViewEngine.compileComponents (../packages/core/testing/src/test_bed.ts:155:25)
at src/app/app.component.spec.ts:10:8
at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/bundles/zone-testing-bundle.umd.js:407:30)
at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (node_modules/zone.js/bundles/zone-testing-bundle.umd.js:3765:43)
at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/bundles/zone-testing-bundle.umd.js:406:56)
at Zone.Object.<anonymous>.Zone.run (node_modules/zone.js/bundles/zone-testing-bundle.umd.js:167:47)
at Object.wrappedFunc (node_modules/zone.js/bundles/zone-testing-bundle.umd.js:4250:34)
envinfo
System:
OS: Ubuntu (tested under wsl2)
Npm packages:
jest: 27.0.5
jest-preset-angular: 9.0.4
typescript: 4.2.3