Ao executar o mocha, estou recebendo o seguinte erro na console do Windows:
C:\Desenvolvimento\workspace\nodejs\casadocodigo>mocha
#ProdutosController
1) "before each" hook for "#listagem de produtos json"
0 passing (16ms)
1 failing
1) #ProdutosController "before each" hook for "#listagem de produtos json":
TypeError: Cannot read property 'connectionFactory' of undefined
at Context.<anonymous> (test\produtos.js:8:33)
Código do produto.js da pasta test:
var express = require('../config/express');
var request = require('supertest')(express);
describe('#ProdutosController', function() {
beforeEach(function(done){
var conn = express.infra.connectionFactory();
conn.query("delete from produtos",function(ex, result){
if(!ex){
done();
}
});
});
it('#listagem de produtos json', function (done) {
request.get('/produtos')
.set('Accpet', 'application/json')
.expect('Content-Type', /json/)
.expect(200,done);
});
it('#Cadastro de novo produto com dados inválidos',function(done){
request.post('/produtos')
.send({titulo:"",descricao:"novo livro"})
.expect(400, done);
});
it('#Cadastro de novo produto com dados válidos',function(done){
request.post('/produtos')
.send({titulo:"titulo do livro",descricao:"novo livro",preco:20.50})
.expect(302, done);
});
});
Código do connectionFactory.js
var mysql = require('mysql');
function createDBConnection(){
if(!process.env.NODE_ENV || process.env.NODE_ENV === 'dev'){
console.log('Conexao 1 - A variavel de ambiente nao existe ou chama dev!');
return mysql.createConnection({
host : 'localhost',
user : 'nodedbuser',
password : 'nodedbuser123*',
database : 'casadocodigo_nodejs'
});
}
if(process.env.NODE_ENV == 'test'){
console.log('Conexao 2 - A variavel de ambiente existe e chama test!');
return mysql.createConnection({
host : 'localhost',
user : 'nodedbuser',
password : 'nodedbuser123*',
database : 'casadocodigo_nodejs_test'
});
}
}
module.exports = function(){
console.log("express load me chamando");
return createDBConnection;
}
Variável de ambiente do Windows:
NODE_ENV=test