opinionated-machine
Version:
Very opinionated DI framework for fastify, built on top of awilix
34 lines • 1.31 kB
JavaScript
import { createContainer } from 'awilix';
import { DIContext } from './DIContext.js';
export class AbstractTestContextFactory {
diContainer;
externalDependencies;
configDependencyId = 'config'; // override in subclass if different
allModules;
constructor(externalDependencies, allModules, diContainer) {
this.externalDependencies = externalDependencies;
this.allModules = allModules;
this.diContainer =
diContainer ??
createContainer({
injectionMode: 'PROXY',
});
}
resetExternalDependencies() {
// Override if necessary
}
async createTestContext(params = {}) {
const context = new DIContext(this.diContainer, params.diOptions ?? {}, this.resolveBaseAppConfig());
const modules = params.modules ?? this.allModules;
context.registerDependencies({
dependencyOverrides: params.dependencyOverrides,
configOverrides: params.configOverrides,
modules,
secondaryModules: params.secondaryModules,
configDependencyId: this.configDependencyId,
}, this.externalDependencies, false);
await context.init();
return context;
}
}
//# sourceMappingURL=AbstractTestContextFactory.js.map