0

将 EFProf ( http://www.hibernatingrhinos.com/products/EFProf ) 与 ASP Boilerplate ( http://www.aspnetboilerplate.com/ ) 一起使用时遇到问题。

对于单元测试,ASP Boilerplate 使用 Effort ( https://github.com/tamasflamich/effort ) 来模拟内存中的数据库。

如果我在不添加对 EFProf 的引用的情况下运行单元测试,则测试运行正确(绿色)。

如果我添加初始化行:

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

在我的测试基础 ctor 或我的应用程序项目的 Initialize() 中,我收到以下错误:

Castle.MicroKernel.ComponentActivator.ComponentActivatorException

ComponentActivator:无法实例化 MyApp.EntityFramework.MyAppDataContext

内部异常有相关信息:

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

Effort 与 EFProf 不兼容吗?还是我在初始化时做了一些非常明显的错误?

4

1 回答 1

2

回答我自己的问题:Effort 伪造了 DbContect 对象,但实际上并没有为内存创建 SQL,因此探查器没有什么可以拦截的。这也是使用EF6 的Database.Log with Effort 时CommandText 始终为空的原因。

我将尝试将 Moq 与 EF6 一起使用,以使用内存数据库实现进行测试,以替代 Asp Boilerplate 的测试项目,该项目利用本文中的 Effort: https ://msdn.microsoft.com/en-us/library/dn314429 (v=vs.113).aspx

于 2017-01-31T05:47:50.800 回答