3
respostas

No meu teste sempre dá o mesmo retorno

Meu teste sempre retorna o mesmo resultado

$ node_modules/mocha/bin/mocha


  lancamentosController
    - listagem json


  0 passing (5ms)
  1 pending
3 respostas

Meu código é o seguinte:

var http = require('http');

describe('lancamentosController', function(){
  it('listagem json'), function(funcaoFinalizacao){
    var configuracoes = {
      hostname: 'localhost',
      port: 3000,
      path:'/registros',
      headers: {
        'Accept': 'application/json'
      }
    };
    http.get(configuracoes, function(res){
      if(res.statusCode == 200){
        console.log('Status ok!');
      }
      console.log(res.headers['content-type']);
      if(res.headers['content-type'] == 'application/json; charset=utf-8'){
        console.log('content-type ok');
      }
      funcaoFinalizacao();
    });
  }
});

Oi José, esse código é específico seu? Pergunto só porque não vi relação dele com o do curso, aí faltou um pouco de contexto para ajudar mais. Pode disponibilizar o código completo? uma parte maior?

Agora assim, olhando só essa parte você faz apenas um get, então não tem muito motivo para o resultado mudar entre os testes.

Sim, Alberto, o código é meu e estou fazendo com base nas aulas. Ele é um pouco diferente sim, porque eu dou outros nomes a algumas rotas, mas na essência é o mesmo. Este é o código dos registros (eu chamo de lançamentos) dentro da pasta routes:

module.exports = function(app){
      app.get('/registros',function(req,res){
        var connection = app.infra.connectionFactory;
        var LancamentoDAO = new app.infra.LancamentoDAO(connection);

        LancamentoDAO.lista(function(err, results){
          res.format({
            html: function(){
              res.render('registros/registros', {lista:results});
            },
            json: function(){
              res.json(results);
            }
          });

        });
        connection.end();
      });
      app.get('/home',function(req,res){
        res.render('home/home', {errosValidacao:{}, lancamento:{}});
      });
      app.post('/registros/salva', function(req,res){

        var lancamento = req.body;

        req.assert('datarotulo', 'É obrigatório o lançamento da data constante no rótulo').notEmpty();//validando campo

        var erros = req.validationErrors();
        if (erros) {
          res.format({
            html: function(){
              res.status(400).render('home/home', {errosValidacao:erros, lancamento:lancamento});
            },
            json: function(){
              res.status(400).json(erros);
            }
          });
          return;
        }

        var connection = app.infra.connectionFactory;
        var LancamentoDAO = new app.infra.LancamentoDAO(connection);
        LancamentoDAO.salva(lancamento, function(erros, results){
          console.log(erros);
          res.redirect('/registros');
        });
      });
};

Aqui é o arquivo que cadastra os registros via terminal (no meu caso, ele cadastra lançamentos):

var http = require('http');

var configuracoes = {
  hostname: 'localhost',
  port: 3000,
  path:'/registros/salva',
  method: 'post',
  headers: {
    'Accept': 'application/json',
    'Content-type': 'application/json'
  }
};

var client = http.request(configuracoes, function(res){
  console.log(res.statusCode);
  res.on('data', function(body){
    console.log('Corpo:'+body);
  });
});

var lancamento = {
  origem: 'ctce pernambuco',
  servico: 'pac',
  datarotulo: '',
  status: 'DP',
  log: '23/01/2018'
};

client.end(JSON.stringify(lancamento));

Por último, este é o código do test:

var http = require('http');

describe('lancamentosController', function(){
  it('listagem json'), function(funcaoFinalizacao){
    var configuracoes = {
      hostname: 'localhost',
      port: 3000,
      path:'/registros',
      headers: {
        'Accept': 'application/json'
      }
    };
    http.get(configuracoes, function(res){
      if(res.statusCode == 200){
        console.log('Status ok!');
      }
      console.log(res.headers['content-type']);
      if(res.headers['content-type'] == 'application/json; charset=utf-8'){
        console.log('content-type ok');
      }
      funcaoFinalizacao();
    });
  }
});