【发布时间】:2018-03-01 13:07:15
【问题描述】:
我有一堂课:
public class WeekCompareModel
{
public WeekData Week1 {get; set;}
public WeekData Week1 {get; set;}
}
这个对象是这样创建的:
var model = new WeekCompareModel
{
Week1 = Repo.FirstOrDefault(x => x.Typ == (int)type && x.Week == week1),
Week2 = Repo.FirstOrDefault(x => x.Typ == (int)type && x.Week == week2),
};
在我的代码中,这是在实现基类的管理器类中实例化的:
public class SystemStatisticsManager : CrudManagerBase<Systemstatistik>, ISystemStatisticsManager
{
public SystemStatisticsManager()
{
Repo = CoreRepository.Systemstatistiks;
}
...
}
我的 crudmanagerbase 类:
public class CrudManagerBase<T> : ICrudManagerBase<T>
where T : class
{
protected readonly ICachedCoreRepository CoreRepository;
protected IQueryable<T> Repo;
...
}
我想在我的单元测试中做的是覆盖调用
new WeekCompareModel { ... }
并将其替换为该模型的测试实例。
知道 FakeItEasy 或任何其他 Mock 库是否可以做到这一点?
【问题讨论】:
-
我建议将创建委托给另一个可以被模拟/存根/伪造的方法。
-
我希望我不需要这样做。这是一个需要大量重写的旧应用程序。
-
是的,试图在糟糕的设计中创造奇迹,事实上是非常困难的。
-
是的,获得预算来解决问题可能很麻烦 :)
标签: c# .net unit-testing fakeiteasy