我正在测试包含此代码的函数:
void FunctionToTest() {
if (context.Entry(entity).State == EntityState.Detached)
{
// [...]
}
// [...]
}
出于这个原因,我创建了自己的测试上下文,但是我无法模拟DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity)
,因为DbEntityEntry
类有一个需要内部类的构造函数。
对此有何解决方案?
答案 0 :(得分:1)
您可以使用Effort。通过NuGet下载,将此代码添加到您的app.config
<system.data>
<DbProviderFactories>
<add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory,Effort" />
</DbProviderFactories>
</system.data><entityFramework>
<providers>
<provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices, Effort" />
</providers>
</entityFramework>
现在,您可以在测试中添加
EffortProviderConfiguration.RegisterProvider();
var connection = DbConnectionFactory.CreateTransient();
var model = new ApplicationDbContext(connection);
model.Database.CreateIfNotExists();
瞧,你有一个虚假的数据库用于测试目的