1
resposta

Erro ao executar expect(resposta.body[0].email).toEqual('[email protected]')

ao tentar rodar no terminal o test, o terminal não me retorna nada, porém aponta que o test foi failed, o erro seria na conexão com o BD ?

import { describe } from '@jest/globals'; import request from 'supertest'; import app from '../../app.js';

let server; beforeEach(() => { const port = 3000; server = app.listen(port); });

afterEach(() => { server.close(); });

describe('GET em /editoras', () => { it('Deve retornar uma lista de editoras', async () => { const resposta = await request(app) .get('/editoras') .set('Accept', 'application.json') .expect('content-type', '/json/') .expect(200);

expect(resposta.body[0].email).toEqual('e@e.com');

}); });

1 resposta

Olá Marcelo, tudo bem?

Pelo que pude perceber, o erro que você está enfrentando não parece estar relacionado à conexão com o banco de dados. O erro está ocorrendo porque o teste está falhando na asserção expect(resposta.body[0].email).toEqual('e@e.com');.

Isso pode acontecer por algumas razões:

  1. A resposta que você está recebendo não é um array, e você está tentando acessar o primeiro elemento (índice 0) dela. Certifique-se de que a resposta é realmente um array.

  2. A resposta é um array, mas está vazia. Nesse caso, tentar acessar resposta.body[0] resultará em undefined, e obviamente undefined.email resultará em um erro.

  3. A resposta é um array e não está vazia, mas o objeto no índice 0 não possui a propriedade email.

Para identificar a causa do problema, sugiro que você imprima a resposta antes da asserção. Isso vai te ajudar a entender o que está vindo na resposta:

console.log(resposta.body);

Depois de adicionar essa linha, execute o teste novamente e veja o que é impresso no console. Isso deve te dar uma ideia do que está causando o erro.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software