Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 5 da Aula 7 - Testes de integração - Rotas não estão sendo carregadas

Estou com problemas ao iniciar o teste com o modulo supertest. Verifiquei que o retorno do teste é um status 404 e imagino que isso esteja ocorrendo devido as rotas estarem se perdendo.... Revisitei as aulas de rotas e não encontrei no que eu estou falhando. :(

retorno do teste:

Error: expected 200 "OK", got 404 "Not Found"

segue o meu arquivo config:

var express = require('express');
var load = require('express-load');
var bodyParser = require('body-parser');
var expressValidator = require('express-validator');

//Exportando o modulo responsavel em configurar o express
module.exports = function (){
    var app = express();

    app.set('view engine', 'ejs');
    app.set('views','./app/views');

    app.use(bodyParser.urlencoded({extended:true})); //middleware responsavel no html response
    app.use(bodyParser.json()); //middleware responsavel em parsear o JSON
    app.use(expressValidator()); //middleware responsavel pela validação

    load('routes',{cwd : 'app'})
        .then('db')
        .into(app);

    return app;
};

e o meu arquivo de teste:

var express = require('../config/configExpress')();
var request = require('supertest')(express);

describe('ProdutosController', function () {

    it('#Verificando se listagem retorna tipo JSON', function (done) { //necessario passar para que o MOCHA saiba que a função assíncrona tenha acabado de fato
        request.get('/produtos')
          //  .set('Accept', 'application/json') // informando que no header da requisiçao tem que ser do tipo JSON
          //  .expect('Content-Type', /json/)   //falando que a resposta esperada no contet-type tem que ter a palavara json
            .expect(200, done); //informando que espera um statusCode 200 e que pode finalizar o teste

    });

});

Link do projeto no GIT: https://github.com/MrMicc/aluraNode

1 resposta
solução!

Descobri o problema... :) o mocha com o supertest, estava com o working directory em nó abaixo da raiz! =P como descobri....

adicionei um verbose no load do express-load

load('routes',{cwd : 'app', verbose:true})
        .then('db')
        .into(app);

e ao rodar o teste consegui ver a onde ele estava procurando o diretorio app:

xpress-load: Converting extension list to regular expression
express-load: Using regular expression/(.*)\.(js$|node$|json$|coffee$|sjs)/for extenstion matching
express-load: All things loaded
express-load: No such file or directory found at: <caminho>\Node\app\routes
express-load: No such file or directory found at: <caminho>\Node\app\db

ao ajustar o working directory do mocha que era incluir o diretorio 'casadocodigo'

As rotas foram carregadas com sucesso:

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
Preparando a factory
express-load: Loaded *.db.ConnectionFactory
express-load: Loaded *.db.ProdutosDAO
express-load: All things loadedListando os produtos

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software