2014-09-26 9 views

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... 
+1

Nessuna necessità di 'migrate: drop'; l'adattatore di memoria si avvia sempre di nuovo! – sgress454

+0

@ sgress454 buono a sapersi :) – Victor

+0

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

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

Problemi correlati