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?
Antwort
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.
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! –
EF v2 wird nicht unter diesen Komplikationen leiden. Wir können Unit-Tests gegen POCO-Objekte durchführen und weniger Haare verlieren. –
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 –
- 1. Mocking Entity Framework Kontext
- 2. Mocking ein SMS-Gateway?
- 3. Mocking ein MembershipUser
- 4. Entity Framework 6 Mocking-Include-Methode auf dbset
- 5. EF6 Mocking abgeleitet DbSets
- 6. MVC 4 Mocking HttpContext - wie Mocking DisplayModeProvider
- 7. Mocking ein NHibernate ISession mit Moq
- 8. Mocking ein Protokoll mit einem generischen Func
- 9. Mocking in scala erzeugt ein java.lang.NoSuchMethodException
- 10. Mocking Mungo
- 11. Mocking FacesContext
- 12. Mocking Guid.NewGuid()
- 13. Mocking Usermanager
- 14. Mocking Eventhandler
- 15. Mocking Couchbase
- 16. Mocking ApiController
- 17. Mocking-Mitgliedschaft
- 18. Python Mocking
- 19. Wie ein @Entity
- 20. Mocking Datasets mit Moq
- 21. Mocking LocalDateTime mit PowerMockito
- 22. Mocking Konstruktoren in Ruby
- 23. Mocking Scala Objekt
- 24. PHP Mocking Abschlussklasse
- 25. Mocking SFTP mit MUNIT
- 26. Python Mocking Callback
- 27. Mocking HttpClient in Komponententests
- 28. Mocking generische Methoden
- 29. Mocking crypto/ssh/terminal
- 30. Mocking indizierte Eigenschaft
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