UNPKG

1.94 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.TestingInjector = void 0;
4const constants_1 = require("@nestjs/core/injector/constants");
5const injector_1 = require("@nestjs/core/injector/injector");
6const instance_wrapper_1 = require("@nestjs/core/injector/instance-wrapper");
7class TestingInjector extends injector_1.Injector {
8 setMocker(mocker) {
9 this.mocker = mocker;
10 }
11 setContainer(container) {
12 this.container = container;
13 }
14 async resolveComponentInstance(moduleRef, name, dependencyContext, wrapper, contextId = constants_1.STATIC_CONTEXT, inquirer, keyOrIndex) {
15 try {
16 const existingProviderWrapper = await super.resolveComponentInstance(moduleRef, name, dependencyContext, wrapper, contextId, inquirer, keyOrIndex);
17 return existingProviderWrapper;
18 }
19 catch (err) {
20 if (this.mocker) {
21 const mockedInstance = this.mocker(name);
22 if (!mockedInstance) {
23 throw err;
24 }
25 const newWrapper = new instance_wrapper_1.InstanceWrapper({
26 name,
27 isAlias: false,
28 scope: wrapper.scope,
29 instance: mockedInstance,
30 isResolved: true,
31 host: moduleRef,
32 metatype: wrapper.metatype,
33 });
34 const internalCoreModule = this.container.getInternalCoreModuleRef();
35 internalCoreModule.addCustomProvider({
36 provide: name,
37 useValue: mockedInstance,
38 }, internalCoreModule.providers);
39 internalCoreModule.addExportedProvider(name);
40 return newWrapper;
41 }
42 else {
43 throw err;
44 }
45 }
46 }
47}
48exports.TestingInjector = TestingInjector;