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 {
// ...
}
}