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

Não consigo salvar no banco de testes

Olá!

Vi que outras pessoas estão/estavam com o mesmo problema que eu. Mas não consegui aplicar na solução do meu. Sou usuário Windows e no cmd uso o seguinte código:

set "NODE_ENV=test"&&node node_modules/mocha/bin/mocha

ou o script abaixo no package.json + npm test no cmd:

"scripts": {
   "test": "set \"NODE_ENV=test\"&&node node_modules/mocha/bin/mocha"
}

Ambos funcionam. Aí obtenho a mensagem de sucesso, porém grava no banco de desenvolvimento, ao invés de gravar no de teste. Segue meu arquivo app/routes/produtos.js:

module.exports = function(app) {

    let listaProdutos = function(req, res, next){

        let connection = app.infra.connectionFactory();
        let produtosDAO = new app.infra.ProdutosDAO(connection);

        produtosDAO.lista(function(err, results){

            if(err){
                return next(err);
            };

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

        connection.end();
    };

    app.get('/produtos', listaProdutos);

    app.get('/produtos/form', function(req, res){
        res.render('produtos/form', {errosValidacao: {}, produto: {}});
    });

    app.post('/produtos', function(req, res){

        var produto = req.body;
        console.log(produto);

        let validaTitulo = req.assert('titulo', 'Título obrigatório').notEmpty();
        let validaPreco = req.assert('preco', 'Formato Inválido').isFloat();

        let erros = req.validationErrors();

        if(erros) {
            res.format({
                html: function() {
                    res.status(400).render('produtos/form', {errosValidacao: erros, produto: produto});
                },
                json: function() {
                    res.status(400).json(erros);
                }
            })

            return;
        }

        let connection = app.infra.connectionFactory();
        let produtosDAO = new app.infra.ProdutosDAO(connection);

        produtosDAO.salva(produto, function(err, results){
            console.log(err);
            res.redirect('/produtos');
        });
    });
};

Até a primeira parte da Aula, onde colocamos o console.log(err) pra ele mostrar o "unknown database" consegui acompanhar o vídeo. Depois não consegui mais reproduzir o vídeo. Inclusive na parte onde ele retira o

.expect('Content-Type', /json/)

do arquivo de testes.

Alguém consegue me ajudar? To a um tempo preso nesse problema.

3 respostas

alguém consegue me ajudar?

solução!

Fala Renato, tudo bom?

Para setar a variavel de ambiente você pode usar essa lib: https://www.npmjs.com/package/cross-env

O uso ficaria assim:

{
  "scripts": {
    "build": "cross-env NODE_ENV=production npm run build"
  }
}

Basta instalar a mesma e colocar o cross-env antes do comando :)

Nossa Mário! Super obrigado! Funcionou de primeira! Gratidão! Salvou o dia! :)