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

Teste não funciona

Após criar um banco de dados novo com os testes, a rota que lista os produtos parou de funcionar. Segue abaixo o código

connectionFactory.js

const mysql = require('mysql');
module.exports = () => {
    return createDBConnection;
}

// Colocamos em uma função a criação da conexão com o banco para que o auto-load não crie um objeto
// assim que for carregado. Assim, ele retorna a função que pode ser chamada á qualquer momento. 
function createDBConnection() {
    if(!process.env.NODE_ENV) { // Se nenhuma variável de ambiente estiver definida, ele supõe que está em dev
        return mysql.createConnection({
                host:'localhost',
                user:'root',
                password:'',
                database:'casadocodigo_nodejs'
        });
    }

    if(process.env.NODE_ENV == 'test') {
        return mysql.createConnection({
                host:'localhost',
                user:'root',
                password:'',
                database:'casadocodigo_nodejs_test'
        });
    }
}

routes/produtos.js

    app.get("/produtos", (req, resp, next) => {
        const connection = app.infra.connectionFactory(); 
        const produtosDAO = new app.infra.ProdutosDAO(connection); 
        produtosDAO.lista((erros, resultados) => {
            if(erros){
                return next(erros);
            }
            resp.format({
                html: () => { 
                    resp.render("produtos/lista", { lista: resultados });
                },
                json: () => { 
                    resp.json(resultados);
                }
            });
        });
        connection.end();
    });

test/produtos.js

    it("#Listagem JSON", done => {
        request.get("/produtos") // Faz uma requisição para "/produtos"
            .set("Accept", "application/json") // Seta a resposta como application/json
            .expect("Content-Type", /json/) // O conteúdo do request tem que ter JSON. Usado por Regex
            .expect(200, done);// O status da requisição for 200 e a função done() é usada para que 
        // a próxima instrução só seja executada quando o callback for completamente executado.
    });
3 respostas
solução!

Oi Leo, tudo bem? Parou de funcionar como? Quer dizer: O que acontece de fato agora?

Tópico está duplicado. Fechando.

Quando duplicar um tópico, coloca o link do outro pra gente poder saber onde está a discussão principal por favor?

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