Skip to content

API reference / @backpack/testing

@backpack/testing️ 📋

This package provides testing utilities to use with Vitest.

Installing

First, ensure you have set up Nexus as private registry needed to use Backpack.

Then, install the package using npm:

bash
npm install -D @backpack/testing

createMockedObject()

Utility function that creates a type-safe mock object based on the provided class definition, by patching all prototype methods with a Vitest-compatible spy function.

Example usage:

ts
import { describe, it } from "vitest";
import { createMockedObject } from "@backpack/testing";

import { MyService } from './my-service';
import { MyRepository } from './my-repository';

describe('MyService', () => {
  const repositoryMock = createMockedObject(MyRepository)
  const myService = new MyService(repositoryMock);

  afterEach(() => {
    repositoryMock.resetAll();
  })
  
  it('should invoke the repository only once', () => {
    myService.doSomething();
    
    expect(repositoryMock.save).toHaveBeenCalledOnce();
  });

  it('should handle value returned by repository', () => {
    repositoryMock.save.mockReturnValue('some value');
    
    const result = myService.doSomething();

    expect(result.value).toBe('some value')
  });
})
ts
export class MyService {
  private readonly repository: MyRepository;
  
  constructor(repository: MyRepository) {
    this.repository = repository;
  }
  
  public doSomething(): string {
    // ...
    
    const entity = this.repository.save()
    
    return {
      value: entity
    }
  }
}
ts
export class MyRepository {
  
  public save(): string {
    // ...
  }
}

Type Aliases

Functions