TypeScript Mock Builder

1.0.3 · active · verified Tue Apr 21

mock-build is a TypeScript library that facilitates the creation of reusable mock objects using the builder pattern, primarily for testing purposes. It is currently at version 1.0.3 and appears to follow a release cadence driven by patches and minor improvements, as indicated by its recent release history since its initial v1.0.0 launch. Key differentiators include its fluent API for constructing complex objects, support for template objects to base mocks on existing data, and a `strictMockBuilder` variant that enforces initialization of all properties, helping to prevent partial or invalid mock states. The library focuses on enhancing readability and maintainability of test data setup in TypeScript projects. It targets Node.js version 18.12 and above, and ships with full TypeScript type definitions.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates the core functionality of `mock-build`: basic object creation, using template objects for variations, and enforcing full field initialization with `strictMockBuilder`.

import { mockBuilder, strictMockBuilder } from 'mock-build';

interface UserInfo {
  id: number;
  userName: string;
  email: string;
  isAdmin?: boolean;
}

// Basic usage: creates a UserInfo object with specified fields.
const userInfo = mockBuilder<UserInfo>()
  .id(1)
  .userName('alice')
  .email('alice@example.com')
  .build();

console.log('Basic User:', userInfo);
// Output: { id: 1, userName: 'alice', email: 'alice@example.com' }

// Usage with a template object, ensuring all mandatory fields are present initially.
const defaultUserInfo: UserInfo = {
  id: 10,
  userName: 'defaultUser',
  email: 'default@example.com',
  isAdmin: false
};

const modifiedUserInfo = mockBuilder(defaultUserInfo)
  .userName('bob')
  .isAdmin(true)
  .build();

console.log('Modified User from template:', modifiedUserInfo);
// Output: { id: 10, userName: 'bob', email: 'default@example.com', isAdmin: true }

// Using strictMockBuilder to enforce all fields are set before calling build().
// The following would cause a TypeScript error:
// const incompleteStrictUser = strictMockBuilder<UserInfo>().id(3).build();

const completeStrictUser = strictMockBuilder<UserInfo>()
  .id(3)
  .userName('charlie')
  .email('charlie@example.com')
  .isAdmin(false)
  .build();

console.log('Strict User:', completeStrictUser);

view raw JSON →