const repo = { findById: jest.fn() } satisfies Pick<UserRepository, 'findById'>;
const module = await Test.createTestingModule({
providers: [UsersService, { provide: UserRepository, useValue: repo }],
}).compile();
const service = module.get(UsersService);
afterEach(() => jest.clearAllMocks());
it('returns a user', async () => {
repo.findById.mockResolvedValue(user);
await expect(service.findById(user.id)).resolves.toEqual(user);
expect(repo.findById).toHaveBeenCalledWith(user.id);
});