1
resposta

Dúvida sobre os testes - resolvido

Como quebrei bastante a cabeça com a mesma dúvida do colega Enzo (https://cursos.alura.com.br/forum/topico-duvida-sobre-os-testes-258049), mas não consegui responder no post dele pois consta que a dúvida foi postada há mais de 4 semanas, coloco aqui a explicação que encontrei.

A questão do teste passar mesmo com o id tendo sido excluído, está no arquivo "editorasController.js", no método "listarEditoraPorId", que não está verificando se o id existe ou não (existindo ou não, retorna 200). Para fazer um teste que fizesse mais sentido para mim, alterei esse método para o que segue:

  static listarEditoraPorId = async (req, res) => {
    const { params } = req;
    try {
      const resultado = await Editora.pegarPeloId(params.id);
      if(!resultado)  return res.status(404).json({ message: 'id não encontrado'});
      return res.status(200).json(resultado);
    } catch (err) {
      return res.status(500).json(err.message);
    }
  };

Assim, se o o id não existir, o método retorna status 404, não passando no teste de pesquisa por id, caso o id informado não exista. E a sequência de testes modifiquei para o que segue:

[...]
let idEditoraCriada
describe('POST em editoras/id', () => {
    it('Deve adicionar uma nova editora', async () => {
        const resposta = await request(app)
            .post('/editoras')
            .send({
                nome: 'CDC',
                cidade: 'SP',
                email: 's@s.com'
            })
            .expect(201)

        idEditoraCriada = resposta.body.content.id
    })
})

describe('GET em editoras/id', () => {
    it('Deve retornar uma editora por id', async () => {
        await request(app)
            .get(`/editoras/${idEditoraCriada}`)
            .expect(200)
    })
})

describe('DELETE em editoras/id', () => {
    it('Deve deletar a editora adicionada', async () => {
        await request(app)
            .delete(`/editoras/${idEditoraCriada}`)
            .expect(200)
    })
})

describe('GET em editoras/id não existente', () => {
    it('Deve retornar not found', async () => {
        await request(app)
            .get(`/editoras/${idEditoraCriada}`)
            .expect(404)
    })
})
1 resposta

Oi, Priscila, tudo bem?

Desculpe a demora em te responder!

Muito obrigado por compartilhar essa informação aqui no fórum. Tenho certeza que vai ajudar muitos alunos e alunas. Continue se dedicando em seus estudos e caso tenha dúvidas, estarei à disposição!

Abraços 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