Oi, Luidi!
Testar esses diferentes cenários (vazio, null e undefined) não é uma má prática. Na verdade, garante que sua validação lida corretamente com diferentes tipos de ausência de dado. No JavaScript, é comum que uma função se comporte de um jeito com uma string vazia e de outro com null, então verificar esses limites traz segurança.
Para evitar a repetição de código e manter seus testes limpos, você pode utilizar o test.each do Jest. Ele permite rodar o mesmo teste com diferentes valores de entrada.
olha como o seu código pode ficar mais direto:
describe("Validação do campo texto", () => {
test.each([
["vazio", ""],
["undefined", undefined],
["null", null]
])("Deve lançar erro quando o texto for %s", (tipo, valor) => {
const executar = () => golombService.encode(valor, 2);
expect(executar).toThrow(ErroValidacao);
expect(executar).toThrow(MENSAGENS_ERRO.CAMPO_OBRIGATORIO("texto"));
});
});
Dessa forma, você mantém a cobertura completa para os três casos, mas escreve a lógica do teste apenas uma vez. Se no futuro a regra mudar, você só precisa mexer em um lugar.
Essa técnica ajuda a cobrir os chamados "edge cases" (casos de borda) sem poluir o arquivo de testes com blocos repetitivos.
Bons estudos e continue explorando essas ferramentas de automação!