Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A unit testing framework for TypeScript backends working with inversion of control and dependency injection
| Date | Stars |
|---|---|
| 2026-07-24 | 539 |
| 2026-07-25 | 539 |
| 2026-07-28 | 539 |
| 2026-07-30 | 539 |
| 2026-08-06 | 539 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
5.0
growth rate 0.00%/day
<p align="center">
<img width="150" src="https://raw.githubusercontent.com/suites-dev/suites/master/logo.png" alt="Logo" />
</p>
<h1 align="center">Suites</h1>
<p align="center">
A unit testing framework for TypeScript backends working with inversion of control and dependency injection
<br />
by <a href="https://github.com/omermorad"><strong>@omermorad</strong></a>
</p>
<div align="center">
<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/license-Apache_2.0-blue.svg" alt="license" /></a>
<a href="https://github.com/suites-dev/suites/blob/master/CONTRIBUTING.md"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" /></a>
<a href="https://npmjs.org/package/@suites/unit"><img src="https://img.shields.io/npm/dm/@suites/unit.svg?label=%40suites%2Funit" alt="npm downloads" /></a>
<a href="https://npmjs.org/package/@automock/jest"><img src="https://img.shields.io/npm/dm/@automock/jest.svg?label=%40automock%2Fjest" alt="npm downloads" /></a>
<a href="https://buymeacoffee.com/omermoradd"><img src="https://img.shields.io/badge/-buy_me_a%C2%A0coffee-gray?logo=buy-me-a-coffee" alt="Buy Me A Coffee" /></a>
</div>
<h3 align="center">
<a href="https://suites.dev">Docs</a>
<span> • </span>
<a href="https://suites.dev/docs/get-started/quickstart">Getting Started</a>
<span> • </span>
<a href="https://suites.dev/docs/get-started/why-suites">Why Suites</a>
<span> • </span>
<a href="https://suites.dev/docs/guides">Guides</a>
</h3>
<p align="center">
<strong>Dependency Injection Frameworks:</strong> <a href="https://nestjs.com">NestJS</a> (<a href="https://docs.nestjs.com/recipes/suites">official</a>), <a href="https://inversify.io/">InversifyJS</a> (<a href="https://inversify.io/docs/ecosystem/suites/">official</a>)</a><br/>
<strong>Testing Libraries:</strong> <a href="https://jestjs.io">Jest</a>, <a href="https://vitest.dev">Vitest</a>, <a href="https://sinonjs.org">Sinon</a>
</p>
<p align="center">
Using Suites? <a href="https://github.com/suites-dev/suites/discussions/655">Share your experience</a>, and help us shape the future of Suites
</p>
## Features
- **Declarative** - Provides a declarative API for defining fully-typed, isolated test environments from a single specification, including automatic mock generation and dependency wiring based on constructor metadata.
- **Type-Safe Refactoring** - Binds mocks to concrete TypeScript implementations so that changes to constructors, injected dependencies, and method signatures are validated at compile time, enabling confident refactors with less failing tests.
- **Standardized Testing Across Teams** - Exposes a uniform testing surface across NestJS, InversifyJS, and other DI setups, enabling consistent test structure and patterns regardless of the underlying framework.
- **AI Ready** - Provides a concise and strict test API that minimizes context requirements for LLM-based coding agents, enabling higher-quality generated tests, clearer and more actionable error messages that guide automatic self-correction, and a higher likelihood of completing test authoring in a single pass.
## Examples
### Solitary Mode
**Solitary mode** tests a single unit in complete isolation - all dependencies are automatically mocked. Use this when
you want to test your unit's logic without any real dependencies.
[Learn more about Solitary Tests](https://suites.dev/docs/guides/solitary)
```typescript
import { TestBed, type Mocked } from '@suites/unit';
describe('User Service', () => {
let userService: UserService; // Class under test
let userApi: Mocked<UserApi>; // Mock instance
let database: Mocked<Database>; // Mock instance
beforeAll(async () => {
// Create the test environment with automatic mocking
const testBed = await TestBed.solitary(UserService).compile();
userService = testBed.unit;
// Retrieve the mock instances
userApExcerpt of 9,643 characters
Read on GitHub387
44
2
1
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:568acf9f2ebbdf7d, topic:testing