2015-01-27 3 views
6

Ich habe Knex erfolgreich verwendet, um eine Verbindung zu einer Back-End-Datenbank herzustellen. Aber ich möchte meinen Code testen können. Gibt es eine Möglichkeit, die Datenbankverbindung zu verspotten?Wie kann ich eine gefälschte Datenbank für das Testen von Einheiten gegen Knex verspotten?

Ich habe versucht mit proxyquire, aber ich kann nicht scheinen, um es zur Arbeit zu bekommen.

Das Problem scheint mit der Art zu sein, wie Knex initialisiert wird.

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

Ich Setup Knex in meinem Komponententest verspottet werden.

myService = proxyquire('../app/myService', { 
     'knex': knexProxy 
}); 

Mein Service umfasst Knex.

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

Wenn mein Dienst eine Abfrage ausführt, schlägt es fehl.

Aus irgendeinem Grund kann ich einfach nicht scheinen, um die Anfrage zu erfassen, bevor es die Verbindung versucht.

Ich habe auch versucht, eine custom Knex Client zu erstellen, aber das hat auch noch nicht funktioniert.

+1

Haben Sie eine Lösung gefunden? Ich arbeite mit Knex und habe das gleiche Problem. Vielen Dank – jomaora

Antwort

0

Ich habe in-memory Sqlite3 databases für automatisierte Tests mit großem Erfolg verwendet. Es ist kein echter Komponententest, aber es läuft viel schneller als MySQL oder PostgreSQL. Ich habe weitere Details zu dieser Lösung on a different question geschrieben.

Verwandte Themen