skończyło się zaczynając od użytkownika @ kgilpin odpowiedź i zakończył się z czymś takim do przetestowania Mysql w AWS 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');
});
});
});
});
Nie chciałem żadnych rzeczywistych połączeń z bazami danych, więc ręcznie wyśmiewałem wszystkie odpowiedzi mysql.
Po dodaniu kolejnej funkcji do .returns
można wysmakować dowolną metodę z poziomu createConnection
.
Czy możesz podać mi więcej informacji? Na przykład wklej kod i pokaż prawdopodobnie pseudokod tego, co chcesz osiągnąć? Chciałbym pomóc. – alessioalex
@alessioalex Szczerze mówiąc, nie wiem nawet, od czego zacząć. Naprawdę Idealnie chciałbym zobaczyć czyjąś klasę modelu i związane z nimi makiety/testy. –