Gostaria de entender o por que baixar um dependência como o super, e não usar o fetch?
ATÉ 50% OFF
TÁ ACABANDO!
0 dias
0 horas
0 min
0 seg
Gostaria de entender o por que baixar um dependência como o super, e não usar o fetch?
Pelo que eu entendi, o benefício de usar o SuperTest é justamente não precisar subir o servidor nem instanciar uma porta.
Porque do jeito que foi mostrado, parece que ele está sendo usado praticamente como um fetch, já que o servidor é iniciado manualmente.
Esse seria o jeito mais correto de usá-lo?
import request from 'supertest';
import app from '../../app.js';
describe('Editoras Routes', () => {
it('should return list of editoras', async () => {
const res = await request(app).get('/editoras');
expect(res.status).toBe(200);
expect(res.body).toEqual(expect.any(Array));
});
});
Oi, Laurence! Como vai?
O problema aqui é comparar SuperTest com fetch como se fossem equivalentes — mas eles não têm o mesmo propósito nos testes.
SuperTest trabalha diretamente com a instância do app Express, sem precisar subir servidor e porta. Isso garante testes mais rápidos, mais estáveis e que não dependem de ambiente externo. Já o fetch sempre exige uma URL, o que obrigaria você a iniciar o servidor manualmente em outro processo.
Resolve fazendo o seguinte:
Use SuperTest sempre que quiser testar rotas de forma isolada, sem iniciar servidor. Ele injeta a requisição direto no Express e retorna um objeto já estruturado para testes (status, headers, body).
Veja este exemplo:
import request from 'supertest';
import app from '../../app.js';
describe('Editoras Routes', () => {
it('should return list of editoras', async () => {
const res = await request(app).get('/editoras');
expect(res.status).toBe(200);
expect(res.body).toEqual(expect.any(Array));
});
});
Espero ter ajudado e bons estudos!