Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Supertest: Uncaught Error: Can't set headers after they are sent.

it('#cadastro de novo produto com dados inválidos', function(done) { request.post('/produtos') .send({titulo:"", descricao:"novo livro"}) .expect(400, done); });

it('#cadastro de novo produto com dados válidos', function(done) { request.post('/produtos') .send({titulo:"título bacana", descricao:"novo livro bacana", preco:99.50}) .expect(302, done); });

Quando executo somente um dos testes, tudo funciona bem. Entretanto ao executar com ambos, é jogada a exceção:

Uncaught Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:357:11) at ServerResponse.header (node_modules\express\lib\response.js:725:10) at ServerResponse.location (node_modules\express\lib\response.js:842:15) at ServerResponse.redirect (node_modules\express\lib\response.js:880:18) at Query._callback (app\routes\produtos.js:55:17) at Query.Sequence.end (node_modules\mysql\lib\protocol\sequences\Sequence.js:86:24) at Query._handleFinalResultPacket (node_modules\mysql\lib\protocol\sequences\Query.js:137:8) at Query.OkPacket (node_modules\mysql\lib\protocol\sequences\Query.js:72:10) at Protocol._parsePacket (node_modules\mysql\lib\protocol\Protocol.js:280:23) at Parser.write (node_modules\mysql\lib\protocol\Parser.js:75:12) at Protocol.write (node_modules\mysql\lib\protocol\Protocol.js:39:16) at Socket. (node_modules\mysql\lib\Connection.js:103:28) at readableAddChunk (_stream_readable.js:176:18) at Socket.Readable.push (_stream_readable.js:134:10) at TCP.onread (net.js:547:20)

2 respostas
solução!

Oi Julio, geralmente esse erro acontece porque você, lá na rota, usou o método render ou redirect e depois, tentou invocar algum desses métodos de novo.. verifica se não tem um if sem else ou algo assim.

Havia faltado um return no "app.post('/produtos', function(req, res)".

Obrigado.