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

Error: Timeout of 2000ms exceeded

Estava testando no prompt normal do Windows e testei no terminal do Atom (para não ficar com várias janelas abertas), vi que ele é PowerShell, alguém conhece? Parece que alguns comandos são diferentes, é igual ao Linux?

Recebi uma mensagem que não aparecia no prompt normal, no capitulo de testes com mocha, ao utilizar o teste de produtos.js, apareceu a seguinte mensagem:

ProdutosController

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.

O que significa essa mensagem de erro?

6 respostas

O callback passado para o teste, tem um segundo argumento que é uma referência para uma função. Essa função precisa ser chamada quando o teste realiza um código assincrono, para notificar o mocha que o teste acabou.

Seria o done?

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

Apareceu novamente erro timeout exceeded.

solução!

Gisele, ao invés de .expect(200, done); digite .expect(200, done());

Funciona?

Sim, mas na aula não tem, como eu sei se é com ou sem ()?

Era para ser sem os () mesmo. A ideia era só passar a referência da função para o expect.

Porque isso acontece?