我正在测试一个包含这段代码的函数:
void FunctionToTest() {
if (context.Entry(entity).State == EntityState.Detached)
{
// [...]
}
// [...]
}
出于这个原因,我创建了自己的运行良好的测试上下文,但我无法模拟 DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity)
作为 DbEntityEntry
类具有需要内部类的构造函数。
有什么解决办法吗?
最佳答案
您可以使用 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();
瞧,你有一个用于测试目的的假数据库
关于c# - 模拟 DbContext 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40809048/