我有一个班级:
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;
...
}
我想在unittest中做的是覆盖对
的调用 new WeekCompareModel { ... }
并将其替换为该模型的测试实例。
是否有可能使用FakeItEasy或任何其他模拟库?
答案 0 :(得分:0)
如@ Nikosi的评论所述,如果不将创作委托给其他方法,FakeItEasy将无法做到这一点。
但你也问过其他图书馆。我过去使用过Typemock Isolator,它有能力。该功能称为Faking Future Instances,可以像
一样使用var handle = Isolate.Fake.NextInstance<Dependency>();
// Do something with the system under test
缺点是Isolator是一种商业产品,正如我输入的那样costs about $399 US/year。
喔。我刚刚注意到JustMock也有Future Mocking。我无法从文档中看出来,但假设它只在paid version中提供了该功能。