Sto usando 'vele-memoria' come database per i miei test di unità Sails e idealmente vorrei cancellare l'intero database dopo i singoli test. C'è un modo per eliminare l'intero database?Eliminare l'intero database delle vele-memoria?
9
A
risposta
2
È possibile sollevare l'app vele prima di ogni test, ricostruendo il database (migrate: 'drop'
). Ecco un esempio:
Sails = require('sails/lib/app');
app = Sails();
var testConfig = {
environment: 'test',
port: 1337,
log: {
level: 'error'
},
connections: {
testDB: {
adapter: 'sails-memory'
}
},
connection: 'testDB',
//wipe/drop ALL my data and rebuild models every time
migrate: 'drop'
};
beforeEach(function (done) {
// start sails app for tests
app.lift(testConfig, function (err, sails) {
done(err);
});
});
//tests...
7
Ho trovato un altro metodo che sembra funzionare. Questo emette un evento che dice al gancio orm di ricaricare prima di ogni test. Se si utilizza la memoria db, o il disco db con l'opzione di migrazione "drop", ottiene il desiderato.
beforeEach((done) => {
"use strict";
// Drops database between each test. This works because we use
// the memory database
sails.once('hook:orm:reloaded', done);
sails.emit('hook:orm:reload');
});
+0
Penso che questo funzioni anche con altri database. Funziona con mongodb. – paulodiovani
Nessuna necessità di 'migrate: drop'; l'adattatore di memoria si avvia sempre di nuovo! – sgress454
@ sgress454 buono a sapersi :) – Victor
Mi ero chiesto: quanto è costosa l'operazione di sollevamento? Al momento ho solo pochi test, ma man mano che il numero di test cresce, mi chiedo se il sovraccarico si sommi a una suite di test a funzionamento lento. Qual è la tua esperienza? Grazie! – HolySamosa