2015-01-27 15 views
6

Ho utilizzato con successo Knex per connettersi a un database di back-end. Ma voglio essere in grado di testare il mio codice unitario. C'è un modo per deridere la connessione al database?Come posso prendere in giro un database falso per il test dell'unità contro Knex?

Ho provato a utilizzare proxyquire ma non riesco a farlo funzionare.

Il problema sembra essere il modo in cui Knex è inizializzato.

var knex = require('knex')({ 
    client: 'mysql', 
    connection: {} 
}); 

Ho impostato knex per essere deriso nel mio test di unità.

Il mio servizio include knex.

var knex = require('knex').knex, 

Quando il mio servizio esegue una query, fallisce.

var sql = knex("table_name"); 
sql.insert(rowToInsert, "auto_increment_id"); 
sql.then(function (insertId) { 
    resolve(); 
}, function (err) { 
    reject(err); 
}); 

Per qualche motivo non riesco a catturare la richiesta prima di tentare la connessione.

Ho anche provato a creare un custom Knex Client, ma non ha funzionato neanche.

+1

hai trovato qualche soluzione a questo? Sto lavorando con Knex e sto avendo lo stesso problema. Grazie – jomaora

risposta

0

Ho utilizzato in-memory Sqlite3 databases per i test automatici con grande successo. Non è vero test delle unità, ma funziona molto più velocemente di MySQL o PostgreSQL. Ho pubblicato maggiori dettagli su questa soluzione on a different question.

Problemi correlati