Skip to content

Testing With createTestWorker

Problem

Consumer code needs task-pool behavior without loading an actual module worker.

Solution

Use createTestWorker() for task pools. It clones data, wraps task errors, records settlements, and supports timeout/cancellation.

ts
import { expect } from 'vitest';
import { createTestWorker } from '@vielzeug/familiar/testing';

const pool = createTestWorker((value: number) => value * 2);

expect(await pool.run(21)).toBe(42);
expect(pool.calls).toEqual([{ input: 21, status: 'fulfilled', value: 42 }]);
pool.dispose();

Pitfalls

  • Test worker-module business logic directly.
  • createTestWorker() does not execute modules or stream handlers.