diff --git a/packages/injector/src/module.ts b/packages/injector/src/module.ts index 3f04837f6..6b3b244cf 100644 --- a/packages/injector/src/module.ts +++ b/packages/injector/src/module.ts @@ -60,7 +60,7 @@ export interface PreparedProvider { function lookupPreparedProviders(preparedProviders: PreparedProvider[], token: Token): PreparedProvider | undefined { let last: PreparedProvider | undefined; for (const preparedProvider of preparedProviders) { - if (token === preparedProvider.token) { + if (token === preparedProvider.token || preparedProvider.providers.includes(token)) { last = preparedProvider; } else if (isType(token)) { if (token.kind === ReflectionKind.any || token.kind === ReflectionKind.unknown) continue; @@ -417,7 +417,7 @@ export class InjectorModule { const service = injector.get(Service); expect(service.dbConfig.host).toBe('localhost'); }); + +test('empty interface provider', () => { + interface Test { + } + + const TEST = {}; + + const Test = provide({ useValue: TEST }); + const rootModule = new InjectorModule([Test]); + const injector = new InjectorContext(rootModule); + const service = injector.get(); + expect(service).toBe(TEST); +}); + +test('export provider', () => { + interface Test { + } + + const TEST = {}; + + const Test = provide({ useValue: TEST }); + const module = new InjectorModule([Test]).addExport(Test); + + const rootModule = new InjectorModule().addImport(module); + const injector = new InjectorContext(rootModule); + const service = injector.get(); + expect(service).toBe(TEST); +});