2009-03-02 13 views
2

Ist es möglich, ein EF-Modell zu verspotten, so dass ich Code testen kann, der die Modellklassen verwendet, ohne LINQ to Entities-Code loszuwerden, der während meines gesamten Projekts verstreut ist? Oder wird es notwendig sein, eine Testdatenbank für das Modell zu erstellen, das stattdessen getroffen wird?Mocking ein Entity Framework-Modell?

+0

Siehe meine Antwort auf die Frage [Mock Entity Framework-Datenbank] (http://StackOverflow.com/Questions/6087857/Mock-entity-Framework-Database/14406546#14406546). Ein Mock-Objekt-Kontext kann mithilfe einer T4-Vorlage aus Ihrem Entitätsmodell erstellt werden. Auf diese Weise werden die normalen POCO-Klassen erstellt, und es kann ziemlich einfach erweitert werden, um einen Mock-Objektkontext und eine Schnittstelle zu erstellen, um sie mit Ihrem konkreten Objektkontext austauschen zu können. – NightOwl888

Antwort

2

Sie könnten Ihren LINQ-Code in Data Access Objects einpacken. Die DAOs hätten separate Schnittstellen- und Implementierungscodes. Ihr Testcode würde die DAOs verspotten.

Wenn Sie das nicht möchten, benötigen Sie eine Test-DB.

+0

Da ich kein Hardcore-TDD-Typ bin, klingt das übermäßig kompliziert, nur um einige Systeme zu testen, an denen ich gerade arbeite. Schande EF wurde nicht entworfen, um leicht testbar zu sein! –

+1

EF v2 wird nicht unter diesen Komplikationen leiden. Wir können Unit-Tests gegen POCO-Objekte durchführen und weniger Haare verlieren. –

+0

Wie würden Sie auch beim Erstellen einer anderen Ebene eine Sicherungsoperation ausführen, da EF mMamDbEntities.SaveChanges() verwendet; nachdem die Entity-Referenz geändert wurde –