Ich mache meine ersten Schritte mit MsTest und Moq und möchte eine Linq2SQL-Repository-Klasse Unit-Test. Das Problem ist, dass ich nicht möchte, dass die Komponententests meine Entwicklungsdatenbank permanent ändern.Unit testet ein LINQ2SQL-Repository
Welches wäre der beste Ansatz für dieses Szenario?
- Lassen Sie jeden Test auf meine wirkliche Entwicklung Datenbank arbeiten, aber stellen Sie sicher, dass jeder Test nach selbst aufräumt
- Erstellen Sie ein Duplikat meiner Entwicklung Datenbank und dbml für das Gerät zu testen und diesen Kontext stattdessen verwenden, damit ich kann klar die gesamte Datenbank vor jedem Testlauf
- Finden Sie einige ausgeklügelte Art und Weise, den Datacontext zu verspotten (bitte beachten Sie, dass ich insgesamt ein Moq noob bin).
- Etwas ganz anderes? Vielleicht etwas, was die Einrichtung der Datenbank für mich vor jedem Testlauf automatisieren würde?
Edit: Ich habe gerade erfahren, dass MBUnit ein Rollback-Attribut, das alle Datenbankoperationen von einem Testfall laufen umkehrt. Ich bin nicht besonders an MSTest gebunden, also könnte dies eine einfache Antwort auf mein Problem sein?
Yup, was ich auch getan habe. Das und erstellte Integrationstests, die gegen eine Datenbank ausgeführt wurden. Linq to Sql ist in dieser Hinsicht ziemlich gut - Sie können die Datenbank direkt aus dem Datenkontext erstellen und erstellen. – Will