这是我的解决方案文件夹:
我正在使用Entity Framework作为我的数据库的ORM,我还为每个实体应用了填充了存储库的工作单元模式。项目参考如下:
WebApi - > BusinessServices
WebApi - > BusinessEntities
BusinessServices - >的DataModel
BusinessServices - > BusinessEntities
我要测试的课程是我的 DataService.cs 类,如下所示:
public class DataService : IDataService
{
private readonly LikkleUoW _unitOfWork;
private readonly IMapper _mapper;
public DataService()
{
_unitOfWork = new LikkleUoW();
var mapperConfiguration = new MapperConfiguration(cfg => {
cfg.AddProfile<EntitiesMappingProfile>();
});
_mapper = mapperConfiguration.CreateMapper();
}
//Interface methods implementation
}
此课程位于 BusinessServices 项目中。然后它在我的Web api控制器中使用。我想要做的是以某种方式将它与构造函数中的'new'-s隔离,使其可注入并测试它。我在我的Web api项目中配置了DI,但我感觉我的类没有很好地实现。目前,我的工作单元将DbContext作为属性并将其传递给所有存储库。所以,我创建了我的ow上下文实现的接口。之后我创建了假的db上下文,它不使用真正的db但是在内存容器中。也许信息不够,但代码很大,我想建议如何处理这种情况。
我目前看到它的方式,我会嘲笑DataService但不知何故我想能够模拟传递给它的构造函数的工作单元所以不使用真正的数据库我希望它使用我的FakeDbContext使用假数据集。