Executando verificação de segurança...
1

[Dúvida] É possível criar um teste unitário para verificar o disparo de um cron job usando NestJs Scheduler ?

Olá pessoal!

Bem, não consegui encontrar nenhum local que pudesse me dar uma dica de como testar o trigger de um cron job, usando o scheduler do nestjs.
Este tipo de teste é realmente necessário?

Se alguem souber, segue um exemplo simples de um cron service.

Obs: Estou importando o ScheduleModule.forRoot() no app.module, conforme documentação. Nos testes eu tentei com e sem a importação dele, mas sem sucesso.

Obs2: Neste caso eu precisaria que chamá-lo, logo quando a aplicação iniciasse, por isso o onApplicationBootstrap

import { Injectable, OnApplicationBootstrap } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';

@Injectable()
export class CronService implements OnApplicationBootstrap {
 constructor() {}

  onApplicationBootstrap() {
    this.startCron();
  }

  @Cron('0 8 * * *')
  async startCron() {
      console.log('Cron triggered!');
  }
}
Carregando publicação patrocinada...
1

Fala, Bruno :) acredito que não faça sentido desenvolver esse teste. Cron jobs são recursos do SO e já tem seu funcionamento testado e validado. O que seria do seu interesse testar, seria a função que o Cronjob executa, que neste caso está no domínio do seu negócio, e essa função pode ter um teste unitário sem qualquer dependência com um cronjob.

1

Muito obrigado pela resposta!
Realmente juntando o que disse com o fato de nao ter encontrado nada sobre o assunto, faz realmente sentido!

Os testes das funções executados pelo cron, ja consegui criar.

1

Já tentou criar um mock e fazer uma função que usa o cron e ai testar pra ver se está fazendo o que deveria corretamente? É uma boa. Não sei muito a respeito.

1