Agent skill
test:service-layer
Gera testes para Application Layer (Services, Use Cases). Prioriza integracao sobre unitario. FakeBuilder obrigatorio.
Install this agent skill to your Project
npx add-skill https://github.com/edneyreis999/zord-project/tree/main/service_financial-claude/skills/test-service-layer
SKILL.md
Test Service Layer
Testes para camada Application (DDD).
Regras
- INTEGRACAO prioritaria - unitario so se FakeBuilder + loop criar multiplos cenarios
- FakeBuilder OBRIGATORIO para inputs
- Mock apenas dependencias externas (DB, HTTP, eventos)
- Nomenclatura:
*.integration.spec.ts(integracao) ou*.spec.ts(unitario)
Decisao Integracao vs Unitario
| Cenario | Tipo |
|---|---|
| Fluxo completo com DB | Integracao |
| Multiplas variacoes de input | Unitario + loop |
| Validacao de orquestracao | Integracao |
Padrao
describe('[UseCase]', () => {
it('should [resultado] given [contexto]', async () => {
const input = Entity.fake().anEntity().build();
const result = await useCase.execute(input);
expect(result).toMatchObject({...});
});
});
Arvore de Decisao
Tem side-effect externo (DB, HTTP, evento)?
├─ SIM → INTEGRACAO
└─ NAO → Tem >3 variacoes de input?
├─ SIM → UNITARIO com loop + FakeBuilder
└─ NAO → INTEGRACAO (mais valor)
Mocking Strategy
| Dependencia | Mock? | Motivo |
|---|---|---|
| Repository | SIM (unit) / NAO (integ) | Testar persistencia real em integracao |
| External API | SEMPRE | Nao depender de servico externo |
| Domain Entity | NUNCA | Usar FakeBuilder |
| EventEmitter | SPY | Verificar emissao, nao mockar |
Auto-Mocking (Preferido)
vi.mock('./repository');
vi.mocked(repository.save).mockResolvedValue(entity);
Evitar mock manual - usar vi.mock/jest.mock no nivel de modulo.
Estrutura de Arquivos
Testes DEVEM estar em __tests__/:
src/application/__tests__/list-entities.use-case.spec.ts
test.each para Search/Filter/Paginate
describe('search with filter and paginate', () => {
const entities = [
Entity.fake().anEntity().withName('test').build(),
Entity.fake().anEntity().withName('TEST').build(),
Entity.fake().anEntity().withName('TeSt').build(),
];
const arrange = [
{ input: { page: 1, per_page: 2, filter: { name: 'TEST' } }, expected: { total: 3, current_page: 1 } },
{ input: { page: 2, per_page: 2, filter: { name: 'TEST' } }, expected: { total: 3, current_page: 2 } },
];
beforeEach(() => repository.bulkInsert(entities));
test.each(arrange)('when input is $input', async ({ input, expected }) => {
const output = await useCase.execute(input);
expect(output).toMatchObject(expected);
});
});
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
coderabbit-review
Executa CodeRabbit CLI em modo prompt-only para revisar alterações locais, identificar issues, planejar correções e validar com testes antes do commit
NestJS Architect
Guia arquitetural para desenvolvimento NestJS com DDD, Clean Architecture e padrões avançados. Use quando codificar serviços, módulos, agregados, use cases ou refatorar código NestJS.
Docker + NestJS Dev Environment
Configure e otimize ambientes de desenvolvimento Docker para projetos NestJS com hot-reload, persistência de dados, health checks e debugging eficiente.
NestJS + Jest Testing Excellence
Aplica padrões de excelência em testes com NestJS e Jest seguindo Clean Architecture, DDD e boas práticas de testabilidade. Use quando criar ou refatorar testes unitários, de integração ou E2E em projetos NestJS.
react-electron-code-health
Analisa código React + Electron contra best practices de Clean Architecture, React Hooks, Electron IPC, TypeScript, Apollo Client e Tailwind CSS. Detecta code smells, violações de arquitetura e calcula score quantitativo.
nextjs-architect
SEMPRE use quando trabalhar com Next.js 15/React 19 + shadcn/ui + Tailwind. Arquiteta apps server-first/feature-first com decisões de estado, cache, forms, segurança e performance.
Didn't find tool you were looking for?