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

Timeout Error

Ao executar o script de Teste :

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);

    });
});

Eu recebo a seguinte mensagem:

 #ProdutosController
express-load: Converting extension list to regular expression
express-load: Using regular expression/(.*)(\.js$|\.node$|\.json$|\.coffee$|\.sjs)/for extenstion matching
express-load: Loaded *.routes.produtos
express-load: Loaded *.infra.connectionFactory
express-load: Loaded *.infra.ProdutosDAO
express-load: All things loaded
    1) #listagem json


  0 passing (2s)
  1 failing

  1) #ProdutosController
       #listagem json:
     Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (C:\Users\allan\Documents\Alura\Node.JS\casadocodigo\test\produtos.js)

Ao colocar o "done()" no final:

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();

    });
});

eu recebo este resultado:

#ProdutosController
    √ #listagem json


  1 passing (42ms)

Gostaria de saber o que estou fazendo de errado para dar o timeout.

3 respostas

Oi Allan, chamar o done diretamente ainda não confirma que seu teste está executando certinho. Isso por que a chamada assim pode encerrar o teste antes mesmo da requisição ser finalizada. Será que não está tendo erros quando faz a requisição? No navegador, você consegue abrir o endereço?

solução!

Olá Wanderson! muito obrigado pela resposta, mas o erro foi meu mesmo... xD o problema está no require do express.

Na primeira linha eu estava fazendo o require para a function:

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

Quando na verdade eu tinha que fazer o require para o resultado dela:

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

Eu esqueci de colocar os parênteses no final. Obrigado

Opa Allan, que bom hein! As vezes acontece mesmo, a gente escreve um parênteses e vai tudo por água abaixo, rsrsrs, faz parte!

Bons estudos!