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

7.Teste de Integração - Supertest - Ensure the done() callback is being called...

Boa tarde, pessoal!

Conforme indicado no vídeo 4, eu tenho o seguinte código:

var express = require('../config/express');
var request = require('supertest')(express);

describe('#ProdutosController',function(){
    it('#listagem json',function(done){
       request.get('/produtos')
       .set('Accept','application/json')
       .expect('Content-Type',/json/)
       .expect(200,done);

    });


});

Mas ao executar o teste, o node exibe a seguinte mensagem: "Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test."

Não defini a função done(), pois no vídeo é informado que não é necessário fazer isso quando o supertest é utilizado.

Mesmo assim, defini para ver se dessa forma o teste rodaria. De fato o teste rodou, mas ele sempre mostra que o teste passou, mesmo quando o valor esperado sendo diferente do resultado. Isso deve estar acontecendo pois a função passou a seu assíncrona.

O que devo fazer nesse caso?

Muito Obrigado!

3 respostas
solução!

Cara, você esqueceu de invocar a função do express.

var express = require('../config/express')();

O express retorna no module.export uma função. Quando um módulo retorna uma função devemos invocar ela. Creio que este seja seu problema.

Era isso mesmo Pablo, obrigado pela ajuda.

Disponha amigo! =D