Ich benutze Entity Framework 4 +.
Ist es möglich, automatisch eine MOCK-Datenbank aus dem Schema mit einigen zufälligen Daten zu erstellen? Wo ints, puts ints, wo strings, lege einige GUIDs oder was auch immer ...
Es würde mir helfen, meine Anwendung viel zu debuggen.
Danke, James
Gehen Sie zu diesem Link und sehen Sie sich diesen Abschnitt "Initialdaten in automatisch erstellten Datenbanken seeden" an
Ich habe dieses großartige Tool für die Verwendung mit EF 4 zum Mocking der Datenbank entdeckt . Grundsätzlich ist es nur eine T4-Vorlage, die sowohl die "normale" EF-Ebene erstellt als auch ein Mock-Objekt und eine Schnittstelle erstellt, die zum Testen verwendet werden können. Weitere Dokumentation hier .
Ein Vorbehalt allerdings. Out of the Box funktionierte es nicht für mich, weil mein Repository-Code SaveChanges () und andere Methoden aufruft, die nicht in der generierten Schnittstelle implementiert sind. Ich konnte das umgehen, indem ich die Schnittstelle aus der ObjectContext-Implementierung von Microsoft extrahiere und meine eigene IObjectContext-Schnittstelle erstelle. Ich habe dann eine Basisklasse (für den Schein) erstellt, die diese Schnittstelle implementiert, indem sie einfach jeden der Aufrufe an einen injizierten Schein delegiert. Auf diese Weise kann ich Moq verwenden, um dieses Stück in meiner Testklasse zu erstellen, während ich die Einfügungen, Aktualisierungen und Löschungen im generierten Mock nachverfolgen kann.
Hier sind meine Änderungen an der T4-Vorlage "Context", um dieses Problem zu beheben. Tut mir leid, dass ich das in kleinen Stücken gemacht habe - SO ließ mich nicht die gesamte Code-Liste veröffentlichen, weil es zu lang war.
Fügen Sie diesen Code vor fileManager.Process();
Fügen Sie diesen Code nach dem WriteInterface()
-Block hinzu.
Ändere die ersten 2 Zeilen (die zweite ist die geschweifte Klammer) von WriteMockContextBody()
(nach dem Kommentar) zu
Ändern Sie die erste Zeile von WriteInterface()
(nach dem Kommentar) zu
Ich sollte auch beachten, dass ich noch nicht viel getestet habe, aber ich habe einige grundlegende Überprüfungen durchgeführt, um sicherzustellen, dass es funktioniert.
Hier ist eine Bibliothek, die beim Erstellen von Testdaten hilft - Ссылка
Siehe den Blog von Rab Hallett mit dem Titel ADO.NET Mocking Context Generator: Visual Studio 2010 Vorlage
Hier verwendet Rab eine T4-Vorlage, um die Schnittstelle für EF zu erstellen.
Sie können das hier nachlesen thread über Visual Studio für Datenbankfachleute. Oder RedGate hat ein ähnliches Tool . Ich kenne keine kostenlosen Tools, die das tun würden.
Tags und Links c# entity-framework database mocking