terminé a partir de la respuesta de @ kgilpin y terminó con algo como esto para probar MySQL en una EMA Lambda:
const sinon = require('sinon');
const LambdaTester = require('lambda-tester');
const myLambdaHandler = require('../../lambdas/myLambda').handler;
const mockMysql = sinon.mock(require('mysql'));
const chai = require('chai');
const expect = chai.expect;
describe('Database Write Requests', function() {
beforeEach(() => {
mockMysql.expects('createConnection').returns({
connect:() => {
console.log('Succesfully connected');
},
query: (query, vars, callback) => {
callback(null, succesfulDbInsert);
},
end:() => {
console.log('Connection ended');
}
});
});
after(() => {
mockMysql.restore();
});
describe('A call to write to the Database with correct schema', function() {
it('results in a write success', function() {
return LambdaTester(myLambdaHandler)
.event(anObject)
.expectResult((result) => {
expect(result).to.equal(succesfulDbInsert);
});
});
});
describe('database errors', function() {
before(() => {
mockMysql.expects('createConnection').returns({
connect:() => {
console.log('Succesfully connected');
},
query: (query, vars, callback) => {
callback('Database error!', null);
},
end:() => {
console.log('Connection ended');
}
});
});
after(() => {
mockMysql.restore();
});
it('results in a callback error response', function() {
return LambdaTester(myLambdaHandler)
.event(anObject)
.expectError((err) => {
expect(err.message).to.equal('Something went wrong');
});
});
});
});
que no querían cualquier conexión de bases de datos reales, así que burlé manualmente todas las respuestas de MySQL.
Añadiendo otra función a .returns
puede burlarse de cualquier método de createConnection
.
¿Me puede dar más detalles? Por ejemplo, pegue un código y muestre quizás un pseudocódigo de lo que le gustaría lograr. Me gustaría ayudar. – alessioalex
@alessioalex Honestamente, ni siquiera sé por dónde empezar. Realmente, me gustaría ver la clase de modelo de otra persona y sus burlas/pruebas asociadas. –