From e25b5eb2e9b9fdba5fd6163661d3089aabf0363c Mon Sep 17 00:00:00 2001 From: Artur Androsovych Date: Tue, 26 Oct 2021 08:06:07 +0300 Subject: [PATCH] feat: allow overriding global `teardown` options (#502) --- projects/spectator/src/lib/base/initial-module.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/projects/spectator/src/lib/base/initial-module.ts b/projects/spectator/src/lib/base/initial-module.ts index 5945e316..28ba658f 100644 --- a/projects/spectator/src/lib/base/initial-module.ts +++ b/projects/spectator/src/lib/base/initial-module.ts @@ -27,8 +27,12 @@ export function initialModule(options: Required): ModuleMe return { declarations: [...globals.declarations, ...options.declarations, ...options.entryComponents], imports: [...(options.disableAnimations ? [NoopAnimationsModule] : []), ...globals.imports, ...options.imports], - providers: [...globals.providers, ...options.providers, ...options.mocks.map(type => options.mockProvider(type))], + providers: [...globals.providers, ...options.providers, ...options.mocks.map((type) => options.mockProvider(type))], entryComponents: [...options.entryComponents], - teardown: {...options.teardown} + teardown: + // Caretaker note: we don't want to merge the `globals.teardown` and `options.teardown`, since `options.teardown` + // is always defined. If the user calls `defineGlobalsInjections({ teardown: { ... } })` and we merge it with + // `options.teardown`, then `options.teardown` will always override global options. + { ...(globals.teardown || options.teardown) }, }; }