xTaskjs 1.0 ya está disponible: cuentas por rol, documentación y una interfaz personalizable.

Paquetes

@xtaskjs/testing

Testing runtime and module builder for isolated DI containers and provider overrides.

npm install -D @xtaskjs/testing vitest reflect-metadata Ruta del paquete: packages/testing

Resumen

Qué controla este paquete en el runtime

Testing provides a focused testing module API for xtaskjs services and controllers. It builds isolated DI containers, supports provider overrides, and helps teams write unit and integration tests without booting a full HTTP runtime.

Qué ofrece

  • Test.createTestingModule() starts an isolated module graph from metadata or module classes.
  • overrideProvider(token) supports useValue, useClass, and useFactory override strategies.
  • moduleRef.get() and moduleRef.resolve() expose sync or async-friendly provider lookup.
  • moduleRef.close() triggers teardown hooks and clears test container state.

Cómo encaja

  • Used by xtask-cli test generators (controller-test, service-test, resource-tests) for starter scaffolds.
  • Demonstrated by the 25-testing_app sample with DI overrides and lifecycle assertions.
  • Pairs with Node test runner or Vitest in CI pipelines to keep service-level tests fast and deterministic.

Mapa de uso

Qué peso tiene este paquete dentro del runtime

Arranque

4/5

Inyección de dependencias

5/5

Testing

5/5

Operaciones

4/5

Integraciones

4/5

Flujo del paquete

Cómo atraviesa este paquete las fases del runtime de xtaskjs

Antes del arranque

Build test module metadata and provider overrides so each test can compile an isolated container graph.

During compile()

The testing runtime resolves providers through xtask DI semantics, applies overrides, and returns a scoped module reference.

During moduleRef.close()

Lifecycle hooks run and container state is disposed so tests remain isolated between runs.

Superficie API

Exports representativos del paquete original

Uso

Flujo típico de adopción

1. Create a testing module

Use Test.createTestingModule() with providers or module metadata matching the unit under test.

2. Override dependencies

Replace repositories, services, or transport clients via overrideProvider() to isolate behavior.

3. Resolve and cleanup

Resolve providers with moduleRef.get() or moduleRef.resolve(), then call moduleRef.close() in teardown.

Ejemplo

Fragmento de referencia

Create a testing module with provider overrides
import "reflect-metadata";
import { Test } from "@xtaskjs/testing";
import { UsersService } from "./users.service";
import { UsersRepository } from "./users.repository";

const repositoryMock = {
  findAll: () => [{ id: "1", name: "Ada" }],
};

const moduleRef = await Test.createTestingModule({
  providers: [UsersService, UsersRepository],
})
  .overrideProvider(UsersRepository)
  .useValue(repositoryMock)
  .compile();

const service = moduleRef.get(UsersService);
service.findAll();

await moduleRef.close();

Ejemplos

Ejemplos oficiales para revisar después

Ejemplos de referencia: 25-testing_app