Olá Pessoal, tudo beleza?
No projeto que estou trabalhando em Node.js com MySql, tenho utilizado o conceito do módulo "express-load". Durante o desenvolvimento, não havia colocado teste de integração e de unidade. Como o momento é propício, resolvi adicionar testes no projeto, o problema que estou tendo certas dificuldades para configurar no helpers da mesma forma que configurei no app.js.
Abaixo encontra-se a forma como estou desenvolvendo:
app.js
var load = require('express-load');
load("routes", { cwd: "app" })
.then("controllers")
.then("models")
.then("services")
.then("data")
.into(app);
test/integration/helpers.js
var supertest = require('supertest');
var chai = require('chai');
var app = require('../../app');
global.app = app;
global.request = supertest(app);
global.expect = chai.expect;
test/integration/mocha.opts
--require test/integration/helpers.js
--reporter spec
--compilers js:babel-core/register
--slow 5000
test/integration/cliente.js
describe('Routes clientes', () => {
const Cliente = new app.models.Cliente(),
defaultCliente = {
id: 1,
nome: 'Default Cliente',
telefone: '(12) XXXX-XXXX',
email: 'teste1@outlook.com'
};
const cliente = new Cliente();
beforeEach((done) => {
cliente.esvaziar(() => {
cliente.criar(defaultCliente, () => {
done();
});
});
});
describe('Route GET /clientes', () => {
it('deveria retornar lista de clientes', done => {
request
.get('/clientes')
.end((err, res) => {
expect(res.body[0].id).to.be.eql(defaultCliente.id);
expect(res.body[0].nome).to.be.eql(defaultCliente.nome);
done(err);
});
});
});
});