Simplificando Testes no NestJS com Injeção de Valores

Quando trabalhamos com NestJS, é muito comum ver serviços injetando o ConfigService diretamente. Isso funciona bem, mas pode tornar os testes mais complexos e acoplar o código a detalhes de configuração.

Vamos comigo enquanto escuto uma playlist de te…


This content originally appeared on DEV Community and was authored by Tadeu Barbosa

Quando trabalhamos com NestJS, é muito comum ver serviços injetando o ConfigService diretamente. Isso funciona bem, mas pode tornar os testes mais complexos e acoplar o código a detalhes de configuração.

Vamos comigo enquanto escuto uma playlist de techno no youtube.

Neste artigo, vou mostrar uma abordagem simples para desacoplar suas classes e facilitar os testes, injetando valores primitivos prontos via módulo.

O problema: acoplamento ao ConfigService

Um serviço de criação de contato que valida a data mínima poderia ser escrito assim:

@Injectable()
export class CreateContactService {
  constructor(private readonly config: ConfigService) {}

  execute(name: string, birthDate: Date) {
    const minDate = this.config.get<Date>('CONTACT_MIN_DATE');
    if (birthDate < minDate) {
      throw new Error('Data inválida');
    }
    return { name, birthDate };
  }
}

Funciona, mas agora qualquer teste precisa mockar o ConfigService.Isso gera fricção desnecessária.

A solução: injetar valores prontos via módulo

Podemos mover a responsabilidade para o módulo:

@Injectable()
export class CreateContactService {
  constructor(private readonly minDate: Date) {}

  execute(name: string, birthDate: Date) {
    if (birthDate < this.minDate) {
      throw new Error('Data inválida');
    }
    return { name, birthDate };
  }
}

E no módulo:

@Module({
  providers: [
    {
      provide: CreateContactService,
      useFactory: (config: ConfigService) => {
        return new CreateContactService(
          config.get<Date>('CONTACT_MIN_DATE'),
        );
      },
      inject: [ConfigService],
    },
  ],
  exports: [CreateContactService],
})
export class ContactModule {}

Por que é melhor?

  • Classes mais puras – não sabem de onde o valor veio

  • Testes mais simples – basta instanciar new CreateContactService(new Date('2000-01-01'))

  • Configuração centralizada – módulos realmente controlam dependências

  • Alinhado a SOLID – especialmente Dependency Inversion Principle

Conclusão

Essa pequena mudança de perspectiva (deixar o módulo resolver configs e injetar valores prontos) pode simplificar bastante seus testes e deixar seu código mais limpo.

Injeção de dependência não é só sobre classes complexas: até valores primitivos podem (e devem) ser tratados como dependências.

E você, já aplica esse padrão em seus projetos NestJS?


This content originally appeared on DEV Community and was authored by Tadeu Barbosa


Print Share Comment Cite Upload Translate Updates
APA

Tadeu Barbosa | Sciencx (2025-08-28T22:13:11+00:00) Simplificando Testes no NestJS com Injeção de Valores. Retrieved from https://www.scien.cx/2025/08/28/simplificando-testes-no-nestjs-com-injecao-de-valores/

MLA
" » Simplificando Testes no NestJS com Injeção de Valores." Tadeu Barbosa | Sciencx - Thursday August 28, 2025, https://www.scien.cx/2025/08/28/simplificando-testes-no-nestjs-com-injecao-de-valores/
HARVARD
Tadeu Barbosa | Sciencx Thursday August 28, 2025 » Simplificando Testes no NestJS com Injeção de Valores., viewed ,<https://www.scien.cx/2025/08/28/simplificando-testes-no-nestjs-com-injecao-de-valores/>
VANCOUVER
Tadeu Barbosa | Sciencx - » Simplificando Testes no NestJS com Injeção de Valores. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/08/28/simplificando-testes-no-nestjs-com-injecao-de-valores/
CHICAGO
" » Simplificando Testes no NestJS com Injeção de Valores." Tadeu Barbosa | Sciencx - Accessed . https://www.scien.cx/2025/08/28/simplificando-testes-no-nestjs-com-injecao-de-valores/
IEEE
" » Simplificando Testes no NestJS com Injeção de Valores." Tadeu Barbosa | Sciencx [Online]. Available: https://www.scien.cx/2025/08/28/simplificando-testes-no-nestjs-com-injecao-de-valores/. [Accessed: ]
rf:citation
» Simplificando Testes no NestJS com Injeção de Valores | Tadeu Barbosa | Sciencx | https://www.scien.cx/2025/08/28/simplificando-testes-no-nestjs-com-injecao-de-valores/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.