FocoItEasy伪造Poco类的实例

问题描述 投票:0回答:1

我有一节课:

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),
};

在我的代码中,这是在实现基类的manager类中实例化的:

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或任何其他模拟库,是否有可能?

c# .net unit-testing fakeiteasy
1个回答
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中的功能。

© www.soinside.com 2019 - 2024. All rights reserved.