diff --git a/packages/jsdoc-core/lib/dependencies.js b/packages/jsdoc-core/lib/dependencies.js index 959edc6c..3841282b 100644 --- a/packages/jsdoc-core/lib/dependencies.js +++ b/packages/jsdoc-core/lib/dependencies.js @@ -63,6 +63,14 @@ class Dependencies { registerValue(name, value) { this._bottle.value(name, value); } + + reset(names) { + if (!Array.isArray(names)) { + throw new Error('Must provide an array of provider names'); + } + + this._bottle.resetProviders(names); + } } module.exports = Dependencies; diff --git a/packages/jsdoc-core/test/specs/lib/dependencies.js b/packages/jsdoc-core/test/specs/lib/dependencies.js index be888cc5..3229c2f0 100644 --- a/packages/jsdoc-core/test/specs/lib/dependencies.js +++ b/packages/jsdoc-core/test/specs/lib/dependencies.js @@ -148,4 +148,24 @@ describe('@jsdoc/core/lib/dependencies', () => { expect(() => container.registerValue('name', new Set())).not.toThrow(); }); }); + + describe('reset', () => { + it('throws on non-array input', () => { + expect(() => container.reset()).toThrowError(); + }); + + it('removes cached singletons', () => { + class Foo {} + + let instance1; + let instance2; + + container.registerSingleton('Foo', Foo); + instance1 = container.get('Foo'); + container.reset(['Foo']); + instance2 = container.get('Foo'); + + expect(instance2).not.toBe(instance1); + }); + }); });