Testing
Unit and integration testing for Vela applications.
The @velajs/testing package provides utilities for testing Vela applications. It lets you create isolated modules, resolve providers, and optionally build a full application for integration tests.
Installation
npm install -D @velajs/testingCreating a Testing Module
Test.createTestingModule() accepts the same metadata as @Module() and returns a TestingModuleBuilder. Call .compile() to produce a TestingModule:
import { Test } from '@velajs/testing';
import { SpiritsController } from './spirits.controller';
import { SpiritsService } from './spirits.service';
const module = await Test.createTestingModule({
controllers: [SpiritsController],
providers: [SpiritsService],
}).compile();Calling .compile() resolves all providers but does not build routes. This is useful for unit testing services and other providers in isolation.
Resolving Providers
Use module.get<T>(token) to retrieve any provider from the compiled module:
const service = module.get(SpiritsService);
expect(service.findAll()).toEqual([]);Building an Application
If you need a running application for integration tests, call createApplication() on the compiled module. This builds routes and returns a VelaApplication:
const app = module.createApplication();
const response = await app.fetch(new Request('http://localhost/spirits'));
expect(response.status).toBe(200);Cleanup
Always close the testing module after tests to release resources:
afterAll(async () => {
await module.close();
});Full Example
import { Test } from '@velajs/testing';
import { SpiritsController } from './spirits.controller';
import { SpiritsService } from './spirits.service';
describe('SpiritsController', () => {
let module;
let service: SpiritsService;
beforeAll(async () => {
module = await Test.createTestingModule({
controllers: [SpiritsController],
providers: [SpiritsService],
}).compile();
service = module.get(SpiritsService);
});
afterAll(async () => {
await module.close();
});
it('should return an empty array', () => {
expect(service.findAll()).toEqual([]);
});
});Scheduled Events
Handle cron triggers in Cloudflare Workers.
Overrides
Override providers, guards, pipes, interceptors, and filters in tests.
Last updated on