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

Falha no Teste

Inclui o código dos testes. Porém, sempre aparece status "ok", mesmo forçando o erro ele não exibe mensagem de erro, sempre passa no teste. O que poderia ser?

Obs: Veja que no segundo testa, eu forcei um status 20000 justamente para dar erro, mas ele aparece OK e passa no teste ( o certo seria status 400 neste caso )

var express = require('../config/express');
var request = require('supertest')(express);
describe('#ProdutosController', function(){

    it('#Teste de listagem json', function(done){

        request.get('/produtos')
            .set('Accept', 'application/json')
            .expect('Content-type', /json/)
            .expect(200,done());
    })

    it('#Teste insert livro com dados inválidos', function(done){
        request.post('/produtos')
        .send({
            titulo: '',
            descricao: 'testando',
            preco: 45.50
        })
        .expect(20000, done());
    })

    it('#Test insert com dados certos', function(done){
        request.post('/produtos')
        .send({
            titulo: 'Livro do Mocha',
            descricao: 'lorem ipsum',
            preco: 60.00
        })
        .expect(302, done());
    })
})
3 respostas

Meu chute olhando o código.. não chama a função done, simplesmente passa ela como parâmetro. Ex:

expect(302, done);

Eu já tentei isso também. O problema é que se eu não chamo a função done e coloco apenas como parâmetro, ocorre o seguinte erro:

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

Eaí não funcionam os testes

solução!

Opa Diego, dá uma olhada aqui => https://github.com/asouza/casadocodigo-javascript/blob/master/test/controllers/produtos.js