Ich verwende mocha, nodejs und pg-promise, die Verbindung zu einer Postgres db. Ich frage mich, wie kann ich eine Funktion testen, die eine DML ausführt? Dies ist nur ein einfaches Beispiel:Komponententestfunktionen Verbinden mit einem Postgres-DB
export function insertUser(db, { firstName, lastName }) {
db.one(`
INSERT INTO users
(
firstName,
lastName
)
VALUES
(
$<firstName>,
$<lastName>
)
`, { firstName, lastName });
}
Wenn es ein Tippfehler in der Abfrage ist, wie kann die Unit-Test-Capture es? Ich kann eine Test-Datenbank erstellen, indem ich temporäre Tabellen im laufenden Betrieb erstelle, aber dadurch wird mein Test verlangsamt.
Anwendungsbeispiel: https://coderwall.com/p/axugwa/cleaning-the-database-in-between-mocha-tests-with-pg-promise –
@ vitaly-t - Ich kann mehrere Probleme mit diesem zu sehen Ansatz. Erstens verlangsamt es den Komponententest, da es sich mit der DB verbindet. Zweitens wird es schwieriger zu pflegen sein, da wir eine neue Testdatenbank erstellen müssen, die das genaue Replikat der Hauptdatenbank ist. Drittens ist es so, als würden wir die pg-promise-Funktionalität testen. Beim Komponententest haben wir davon ausgegangen, dass pg-promise von sich aus ordnungsgemäß getestet wurde, sodass die Funktionalität nicht getestet werden muss. – Chris
Moderne Tests für Datenbank-Code erfordert eine gute Isolation, was bedeutet, dass Sie solche Systeme wie Travis CI verwenden, die Ihnen eine neue Datenbank für jedes Ihrer PR-s gibt, was der richtige Weg ist. Und wenn Sie Tests lokal ausführen, sind sie überhaupt nicht langsam, sie sind sehr schnell, ich mache es die ganze Zeit. Auch, keine Ahnung was du meinst mit 'es ist wie testen pg-versprechen Funktionalität'. –