Frage (n)
- Wie teste ich meine ASP.NET MVC4 Web-Anwendung mit EntityFramework 5?
- Sollte ich ein spöttisches Framework wie Moq verwenden?
Einführung
Ich habe seit Wochen dieses Thema erforscht. Ich habe viel Material gefunden, aber nichts, was ich die Frage vollständig beantworte. Viele der Informationen sind Jahre alt und möglicherweise nicht anwendbar.Wie schreibe ich Tests für meine Webanwendung?
Meine Situation
ich eine MVC4 Anwendung baue, die einen Umbau einer bestehenden, aber veralteten Anwendung ist. Die Datenbank existiert bereits (und daher der Ansatz der ersten Datenbank), ist groß und komplex. Idealerweise ist das, was ich will, ein falsches Entity-Objekt, das mit meinem Entitäts-Hauptobjekt identisch ist, aber eine andere "Schein" - oder In-Memory-Datenbank verwendet, so dass ich eine Menge gefälschter Daten generieren, die Tests ausführen und ausführen kann Feedback erhalten Zum Beispiel:
FakeEntities _db = new FakeEntities();
// test a controller action
Bisher ...
Von dem, was ich verstehe, so weit soll ich integration testing werden. Nach this post by Ladislav Mrnka Integrationstests bedeutet Aktionen Test Controller und bedeutet weniger Probleme mit LINQ-to-Entities und LINQ-to-Objekte
wenn Sie das Repository verspotten Sie verwenden Linq-To-Objekte und Sie werden eine grüne haben Test, aber wenn Sie die Anwendung mit Linq-To-Einheiten ausgeführt werden Sie eine Ausnahme
bekommen ich weiß, was er meint, und ich zustimmen - ich möchte ich immer mit Linq-To-Entities, um sicherzustellen, bin und eine echte (oder fast reale) Datenbank.
Ich habe viel über die repository pattern gelesen und this blog by linush sieht ziemlich nah an was ich versuchen könnte. Tatsächlich habe ich bereits ein Dummy-Projekt erstellt, in dem ich das Erstellen einer generic repository getestet habe und erfolgreich Entity Framework und einen "Mock" -DbContext verwendet habe, die auf In-Memory-ObjectSets angewiesen waren.
Mein Problem mit diesem Ansatz ist,
- Wie oben, bedeutet dies, ich bin mit Linq-To-Objekte anstelle von Linq-To-Entities
- Meine Web-App auf die starke Nutzung von Stored verlassen wird Verfahren
Zusammenfassung, bevor Sie
- MVC4, EF5 und SQL Server antworten (obwohl ich möchte somewh bleiben bei Datenbank Agnostiker)
- Fähigkeit Logik zu testen, die
- Linq-To-Entities
- Datenbank-First-Ansatz
Nur 50 rep für so viele Fragen !!!!!! Versuchen Sie 0's –
[Compuware AJAX Edition kostenlose Web Performance Analysis und Debugging-Tool] (http://www.compuware.com/en_us/application-performance-management/products/ajax-free-edition/Capabilities.html) –