Olá, Silvino! Tudo bem?
Eu acredito que seja uma daquelas situações em que você pode aplicar alguns conceitos de arquitetura no seu código. No caso do contador
, countdownSeconds
é uma dependência. O que geralmente acontece quando construímos algo e depois criamos os testes é perceber que existe essa dependência entre componentes do código e usar a Inversão de Dependências para torná-lo mais flexível.
Assim, ao invés do contador
utilizar o countdownSeconds
, ele pode receber por parâmetro.
Então você poderia fazer algo assim:
contador(callback = this.countdownSeconds) {
setInterval(() =>callback())
}
Agora, nesse exemplo específico, é questionável a utilidade de fazer o teste assim. Você poderia passar outra função para o contador
no seu teste e verificar se ela foi chamada, mas isso significa que você está apenas verificando que a arrow function funcionou e isso teoricamente não é obrigação dos seus testes.
Então, como estamos falando de testes unitários, faz mais sentido criar um teste separado para countdownSeconds
e dessa maneira você sabe que o contador
funciona (chama setInterval
) e o countdownSeconds
também funciona. Agora, o próprio setInterval
e a arrow function são implementações do JavaScript e é ele (e as APIs que ele usa) que precisam garantir nos próprios testes que tudo funciona perfeitamente.
Espero ter ajudado!