我正在努力通过编写一些可以为我创建属性的助手来使EF更容易进行单元测试。我有一对夫妇的支持领域打开带有通用返回类型的类型
private Mock<DbSet<Workflow>> mockedWorkFlows;
private Mock<DbSet<WorkflowError>> mockedWorkFlowErrors;
而且我希望有一个通用的功能,能够回到我正确的支持字段具有以下功能
public Mock<DbSet<T>> Mocked<T>(T t) where T : class
{
if ((object)t is Workflow)
{
return mockedWorkFlows; //cannot Workflow to T
}
}
有,我想一些私人支持字段根据传递的类型返回。
但是,即使我添加了类别约束Workflow
,我也会得到相同的错误。
我也尝试切换t's
类型,但没有运气。几个后备字段的类型不共享除对象以外的共同祖先。我正在尝试做什么?
我没有看到这个方法的重点。创建一个模拟需要1行代码,如果你想设置模拟,你必须单独设置每一个模拟,所以你为什么不创建一个工厂模拟某些类型。 – FCin
从你的EF上下文中嘲笑一个IDbSet不止一行代码。我有一个流畅的接口来分配数据,但是你必须在某个地方公开后台字段,因为当你窥探那些实际上被调用的时候。我只想要一个较小的API,而不是为上下文的所有IDbSet属性设置WorkflowsMocked,WorkflowErrorsMocked等。 –
wootscootinboogie
而不是模拟'DbSet',你有没有考虑嘲笑'SqlConnection',例如,使用Effort框架? https://github.com/tamasflamich/effort –