Testando um serviço em NestJS
Nesta página, vamos testar um serviço (service) em NestJS.

É muito fácil justificar um ponto de vista errado com frases de efeito, especialmente se for de alguém famoso. Como diz Jim Tamm no contexto de ser defensivo, em Ted talk: "seria como colocar creme em bosta de cachorro" [tradução livre, adaptado]😂
O motivo que estou falando isso é porque essa frase geralmente atribuída a Bruce Lee diz bem o que estou por ensinar: prefiro usar a mesma ferramenta várias vezes, como já usamos o mock sem spy, vamos usar sem spy novamente. Estava preparando essa aula, quando vi que o código original que usava estava usando spy sem necessidade, pelo menos consegui resolver o problema sem spy. Caso você queira usar spy, não há nada de errado nisso, pode ser até mesmo um exercício. Contudo, não vamos usar spy! Prefiro ser temido por treinar o mesmo chute 1.000 vezes! 😁
Objetivo: testar, mocando, o serviço abaixo.
//dog.service.ts
//Testando....
findAll(): Promise<Dog[]> {
return this.catModel.find().exec();
}
//--------------------------------------------------------
//Começa os testes
it('should return all dogs', async () => {
const dogs = await service.findAll();
expect(dogs).toEqual(canil);
});
//---------------------------------------------------------
o mock foi colocado no beforeEach
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [DogService,
{
provide: getModelToken('Dog'),
useValue:
{
find: jest.fn().mockReturnValue({
exec: jest.fn().mockResolvedValueOnce(canil)
} as any)
//um cuidado se deve tomar aqui, estamos mocando não o método do service,
//mas sim o métdo chamado pelo
//método do servico, ou seja, o método em cadeia do Mongoose
}
}],
}).compile();
Last updated
Was this helpful?