UNPKG

1.97 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");
7/**
8 * @publicApi
9 */
10class TestingInjector extends injector_1.Injector {
11 setMocker(mocker) {
12 this.mocker = mocker;
13 }
14 setContainer(container) {
15 this.container = container;
16 }
17 async resolveComponentInstance(moduleRef, name, dependencyContext, wrapper, contextId = constants_1.STATIC_CONTEXT, inquirer, keyOrIndex) {
18 try {
19 const existingProviderWrapper = await super.resolveComponentInstance(moduleRef, name, dependencyContext, wrapper, contextId, inquirer, keyOrIndex);
20 return existingProviderWrapper;
21 }
22 catch (err) {
23 if (this.mocker) {
24 const mockedInstance = this.mocker(name);
25 if (!mockedInstance) {
26 throw err;
27 }
28 const newWrapper = new instance_wrapper_1.InstanceWrapper({
29 name,
30 isAlias: false,
31 scope: wrapper.scope,
32 instance: mockedInstance,
33 isResolved: true,
34 host: moduleRef,
35 metatype: wrapper.metatype,
36 });
37 const internalCoreModule = this.container.getInternalCoreModuleRef();
38 internalCoreModule.addCustomProvider({
39 provide: name,
40 useValue: mockedInstance,
41 }, internalCoreModule.providers);
42 internalCoreModule.addExportedProvider(name);
43 return newWrapper;
44 }
45 else {
46 throw err;
47 }
48 }
49 }
50}
51exports.TestingInjector = TestingInjector;