override() function
Home > @rimitive/core > override
override() function
Section titled “override() function”Override dependencies of a module.
Creates a new module with the same implementation but different dependencies. Useful for testing (swapping real services for mocks) or environment-specific configurations.
Replacements are matched by the dependency’s name. If a replacement module has a different name, it will be aliased to the original dependency’s name.
Signature:
export declare function override<T extends AnyModule, R extends { [K in keyof ModuleDeps<T>]?: Module<string, ModuleDeps<T>[K], unknown>;}>(mod: T, replacements: R): OverriddenModule<ModuleName<T>, ModuleImpl<T>, ModuleDeps<T>, ReplacementsToTuple<R> extends AnyModule[] ? ReplacementsToTuple<R> : never[]>;Parameters
Section titled “Parameters”|
Parameter |
Type |
Description |
|---|---|---|
|
mod |
T | |
|
replacements |
R |
Returns:
OverriddenModule<ModuleName<T>, ModuleImpl<T>, ModuleDeps<T>, ReplacementsToTuple<R> extends AnyModule[] ? ReplacementsToTuple<R> : never[]>
Example 1
Section titled “Example 1”Testing with mocks
const MockDB = defineModule({ name: 'db', create: () => ({ query: vi.fn() }),});
const testSvc = compose(override(UserService, { db: MockDB }));Example 2
Section titled “Example 2”Environment-specific dependencies
const prodSvc = compose(override(App, { logger: CloudLogger }));const devSvc = compose(override(App, { logger: ConsoleLogger }));