Probleme mit ASP Boilerplate beim Verwenden von Effort beim Komponententest mit EFProf (Entity Framework Profiler)


Frage

Probleme mit EFProf ( http://www.hibernatingrhinos.com/products/EFProf ) mit ASP Boilerplate ( http://www.aspnetboilerplate.com/ ).

Für Unit-Tests verwendet ASP Boilerplate Effort ( https://github.com/tamasflamich/effort ), um die Datenbank im Speicher zu verspotten.

Wenn ich die Komponententests ohne Hinzufügen der Referenz zu EFProf ausführen, werden die Tests ordnungsgemäß ausgeführt (grün).

Wenn ich die Initialisierungszeile hinzufüge:

HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize();

entweder in meiner Testbasis ctor oder in meinem Anwendungsprojekt Initialize (), erhalte ich den folgenden Fehler:

HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize();

ComponentActivator: konnte MyApp.EntityFramework.MyAppDataContext nicht instanziieren

Die innere Ausnahme enthält die relevanten Informationen:

Error: Unable to cast object of type 'Effort.Provider.EffortConnection' to type 'HibernatingRhinos.Profiler.Appender.ProfiledDataAccess.ProfiledConnection'.

Ist Effort einfach nicht mit EFProf kompatibel? Oder mache ich etwas, das offensichtlich offensichtlich falsch in meiner Initialisierung ist?

Akzeptierte Antwort

Meine eigene Frage beantworten: Effort täuscht das DbContect-Objekt vor, erstellt aber kein SQL für In-Memory, so dass von Profilern nichts abgefangen werden kann. Dies ist auch der Grund, warum CommandText immer Null ist, wenn EF6's Database.Log with Effort verwendet wird.

Ich werde versuchen, Moq mit EF6 zu verwenden, um eine In-Memory-Datenbankimplementierung zum Testen als Alternative zu Asp Boilerplate's Testprojekt zu verwenden, das Effort gemäß diesem Artikel verwendet: https://msdn.microsoft.com/en-us/library/dn314429 (v = vs.113) .aspx





Lizenziert unter: CC-BY-SA
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum