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

Testando a listagem de produtos

Detalhe da duvida Meu teste "mocha" não esta funcionado, pelo que entendi a função " http.get(configuracoes,function(res)", não esta sendo executada.

O que fiz de errado ??

Para fazer o teste, coloquei 5 diaplay no console, console.log('passei aqui 1') console.log('passei aqui 2') console.log('passei aqui 3') console.log('passei aqui 4') console.log('passei aqui 5') para verificar os passos que estão sendo executados,

observem que apenas os passos 1, 2 e 5 estão sendo executados

C:\Caca\Alura\Node\AppNode\casadocodigo>mocha passei aqui 1

ProdutosController

passei aqui 2 passei aqui 5 √ listagem json

1 passing (18ms)

//\AppNode\casadocodigo\test\produtos.js

var http = require('http');

//describe('ProdutosController', function(){
//    it('#listagem json',function(){
//        console.log("teste de verificacao de listagem json");
//    });
//});

describe('#ProdutosController',function(funcaoFinalizacao){

    console.log('passei aqui 1')

    it('listagem json',function(){
        var configuracoes = {
            hostname: 'localhost',
            port:3000,
            path:'/produtos',
            headers: {
                'Accept' : 'application/json'
            }
        };

        console.log('passei aqui 2')        

        http.get(configuracoes,function(res){

            console.log('passei aqui 3')

            if(res.statusCode == 200){
                console.log("Status ta ok");
            }
            if(res.headers['content-type'] == 'application/json; charset=utf-8')
                console.log("Content type ok");
        funcaoFinalizacao();

        console.log('passei aqui 4')        

        });  

    });
});
6 respostas

Olá, Luis. Tudo bom?

Você está com o servidor de pé na porta 3000 no momento que rodou os testes?

O ideal seria tratar o erro na hora de fazer a conexão. Pode ser o que se comentou acima, o servidor não está no ar, ou pode ser que esteja no ar, mas tenha ocorrido algum erro.

Creio que a seguinte alteração pode ser útil:

http.get(configuracoes,function(res){

            console.log('passei aqui 3')

            if(res.statusCode == 200){
                console.log("Status ta ok");
            }
            if(res.headers['content-type'] == 'application/json; charset=utf-8')
                console.log("Content type ok");
        funcaoFinalizacao();

        console.log('passei aqui 4')        

        }).on('error', function(e) {
            console.log('passei aqui 6')        
      console.error(e);
});

Show, Daniel.

Com esse código e o servidor de pé, funcionou Luis?

insira seu código aqui
//\AppNode\casadocodigo\test\produtos.js

var http = require('http');

//describe('ProdutosController', function(){
//    it('#listagem json',function(){
//        console.log("teste de verificacao de listagem json");
//    });
//});

describe('#ProdutosController',function(funcaoFinalizacao){

    console.log('passei aqui 1')

    it('listagem json',function(){
        var configuracoes = {
            hostname: 'localhost',
            port:3000,
            path:'/produtos',
            headers: {
                'Accept' : 'application/json'
            }
        };

        console.log('passei aqui 2')        

        http.get(configuracoes,function(res){

            console.log('passei aqui 3')

            if(res.statusCode == 200){
                console.log("Status ta ok");
            }
            if(res.headers['content-type'] == 'application/json; charset=utf-8')
                console.log("Content type ok");
        funcaoFinalizacao();

        console.log('passei aqui 4')        

        }).on('error', function(e) {
            console.log('passei aqui 6')        
            console.error(e);
            });
        console.log('passei aqui 5')   
    });
});

C:\Caca\Alura\Node\AppNode\casadocodigo>mocha passei aqui 1

ProdutosController

passei aqui 2 passei aqui 5 √ listagem json

1 passing (30ms)

O servidor esta no ar. C:\Caca\Alura\Node\AppNode\casadocodigo>nodemon app.js [nodemon] 1.11.0 [nodemon] to restart at any time, enter rs [nodemon] watching: . [nodemon] starting node app.js modulo ta sendo carregado atendendo a requisicao atendendo a requisicao servidor rodando na porta 3000 [nodemon] restarting due to changes... [nodemon] restarting due to changes... [nodemon] starting node app.js modulo ta sendo carregado atendendo a requisicao atendendo a requisicao servidor rodando na porta 3000 [nodemon] restarting due to changes... [nodemon] restarting due to changes... [nodemon] starting node app.js modulo ta sendo carregado atendendo a requisicao atendendo a requisicao servidor rodando na porta 3000 [nodemon] restarting due to changes... [nodemon] starting node app.js modulo ta sendo carregado atendendo a requisicao atendendo a requisicao servidor rodando na porta 3000 [nodemon] restarting due to changes... [nodemon] starting node app.js modulo ta sendo carregado atendendo a requisicao atendendo a requisicao servidor rodando na porta 3000

mesmo com o servidor no ar, não funcionou...

//\AppNode\casadocodigo\test\produtos.js

var http = require('http');

//describe('ProdutosController', function(){
//    it('#listagem json',function(){
//        console.log("teste de verificacao de listagem json");
//    });
//});

describe('#ProdutosController',function(funcaoFinalizacao){

    console.log('passei aqui 1')

    it('listagem json',function(){
        var configuracoes = {
            hostname: 'localhost',
            port:3000,
            path:'/produtos',
            headers: {
                'Accept' : 'application/json'
            }
        };

        console.log('passei aqui 2')        

        http.get(configuracoes,function(res){

            console.log('passei aqui 3')

            if(res.statusCode == 200){
                console.log("Status ta ok");
            }
            if(res.headers['content-type'] == 'application/json; charset=utf-8')
                console.log("Content type ok");
        funcaoFinalizacao();

        console.log('passei aqui 4')        

        }).on('error', function(e) {
            console.log('passei aqui 6')        
            console.error(e);
            });
        console.log('passei aqui 5')   
    });
});
solução!

E aí Luis, beleza?

Pelo que entendi até o momento no curso sua funcaoFinalizacao está no local errado. Em vez de estar no callback do describe, ela deveria estar no callback do cenário ( do it):

it('listagem json',function(funcaoFinalizacao){
    //testes
    funcaoFinalizacao();
});