Overrides
Override providers, guards, pipes, interceptors, and filters in tests.
The TestingModuleBuilder provides override methods to replace providers and framework components with test doubles. All overrides must be applied before calling .compile().
Overriding Providers
Replace a provider by token using .overrideProvider():
const module = await Test.createTestingModule({
controllers: [SpiritsController],
providers: [SpiritsService],
})
.overrideProvider(SpiritsService)
.useValue({ findAll: () => ['mock-spirit'] })
.compile();useValue
Supply a mock object directly:
.overrideProvider(SpiritsService)
.useValue({ findAll: () => ['mock-spirit'] })useClass
Replace with an alternative class:
.overrideProvider(SpiritsService)
.useClass(MockSpiritsService)useFactory
Use a factory function with optional injected dependencies:
.overrideProvider(SpiritsService)
.useFactory({
factory: (config) => new MockSpiritsService(config),
inject: [ConfigService],
})Overriding Guards
Replace a guard to bypass authorization in tests:
.overrideGuard(AuthGuard)
.useValue({ canActivate: () => true })Overriding Interceptors
Replace an interceptor to skip transformation or logging logic:
.overrideInterceptor(LoggingInterceptor)
.useValue({ intercept: (ctx, next) => next.handle() })Overriding Filters
Replace an exception filter with a no-op:
.overrideFilter(HttpExceptionFilter)
.useValue({ catch: () => {} })Overriding Pipes
Replace a pipe to skip validation or transformation:
.overridePipe(ValidationPipe)
.useValue({ transform: (value) => value })Full Example
import { Test } from '@velajs/testing';
import { SpiritsController } from './spirits.controller';
import { SpiritsService } from './spirits.service';
import { AuthGuard } from './auth.guard';
describe('SpiritsController', () => {
let module;
beforeAll(async () => {
module = await Test.createTestingModule({
controllers: [SpiritsController],
providers: [SpiritsService],
})
.overrideProvider(SpiritsService)
.useValue({ findAll: () => ['Calcifer', 'Ember'] })
.overrideGuard(AuthGuard)
.useValue({ canActivate: () => true })
.compile();
});
afterAll(async () => {
await module.close();
});
it('should return mocked spirits', () => {
const service = module.get(SpiritsService);
expect(service.findAll()).toEqual(['Calcifer', 'Ember']);
});
});Testing
Unit and integration testing for Vela applications.
CRUD
Native CRUD resources with named routes, guards, and OpenAPI.
Last updated on