【发布时间】:2021-10-08 01:22:51
【问题描述】:
我的 .NET Core 解决方案结构清晰。在持久性项目中,我有我的存储库。在实现中,我使用 Linq 对数据库进行了一些调用。
public class QualitativeResearchRepository
: BaseRepository<QualitativeResearch>, IQualitativeResearchRepository
{
public QualitativeResearchRepository(PSCContext db,
ILogger<QualitativeResearchRepository> log)
: base(db, log)
{
}
public decimal GetAverageForClarity(
Expression<Func<QualitativeResearch, bool>> func)
{
var list = _db.QualitativeResearches.Select(r => r.Clarity)
.DefaultIfEmpty();
if (list == null || list.Count() == 0)
return 0;
var result = list.Average();
return result == null ? 0 : (decimal)result;
}
}
所以,有些函数我想应用过滤器和/或聚合,然后进行一些计算。我想模拟上下文(在代码PSCContext 中),这样我就可以测试过滤器和聚合是否如我预期的那样正确。在Microsoft Documentation 上有示例,但仅用于添加新记录。
【问题讨论】:
-
只是为了确认 - 这是 EF Core,对吗?您已标记此 EF Core,但您链接的文档适用于 EF 6 (.NET Framework)。
-
是的,它是 EF Core。 .NET Framework 的 MSDocsis 但
Mock部分可能相同。 -
InMemory 提供者?
-
查看有关不同方法的文档,例如
inmemory或sqllitemock docs.microsoft.com/en-us/ef/core/testing
标签: c# unit-testing entity-framework-core nunit