VelaVela
Testing

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/testing

Creating 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([]);
  });
});
Edit on GitHub

Last updated on

On this page