【发布时间】:2018-09-20 07:18:16
【问题描述】:
我有一个控制器。从我调用的位置(BLL 的 DI)到业务逻辑层(BLL)。从 BLL 我通过另一个接口调用数据访问层 (DAL)。
DAL 层构造函数被注入了 DBContext 实例(这里没有注入接口)。
因此,通过使用 MOQ,我们可以测试控制器、BLL 和中间层。但是如何测试DLL层呢?
public class DAL():IDAL
{
private DBEntities entity;
public DAL(DBEntities DB)
{
entity = DB;
}
public list<string> ABC()
{
var a = SqlMapper.Query<class>(entity.Database.Connection, "",param,commandType: CommandType.StoredProcedure).ToList();
return a;
}
}
基本上我的查询如何&在这里模拟什么?这里我们实现了 IDAL,但这里没有注入。
【问题讨论】:
-
实际上是工作单元模式。在构造函数中,我们注入了实体框架对象以避免创建多个对象。在 public ABC() 你可以看到实现。因为我们使用它在 Dapper 方法中传递 Dbcontext 连接对象。
-
让我的问题直截了当。如果我必须最小化一个注入数据库实体的方法,该怎么办?
-
没错,我尝试过这种方式,但这里的障碍是当我从单元测试传递的 Mock 数据、方法到达真实数据库时,我需要从模拟中获取它。
-
我已经编辑了方法希望它清楚。
-
这里的主要障碍是任何接口都没有发生依赖注入。所以我们无法模拟层来测试任何方法。