【发布时间】:2018-04-17 13:30:18
【问题描述】:
在我的应用程序中,我使用实体框架并想编写单元测试。
Google 叔叔告诉我最好为我的 dbContext 使用 using-statemant。另一方面,我想用依赖注入模拟我的 dbContext。
我该如何解决这个问题?
使用状态:
using (var db = new ApplicationDbContext())
{
return await db.OrderingEquipments.ToListAsync();
}
依赖注入:
public CupsController(IApplicationDbContext db)
{
//_context = obj;
}
【问题讨论】:
-
您在需要的地方注入上下文,并选择适当的生命周期(例如 Web 请求生命周期)。在该生命周期结束时,您处置上下文。
-
你使用的是什么 IoC/DI 容器?
-
大多数 IoC 容器会为您处理这些问题。无需使用
using。例如 - autofaccn.readthedocs.io/en/latest/lifetime/disposal.html . -
警惕模拟不属于您的组件。你可能做出了无法兑现的承诺……
-
谷歌叔叔不是.net专家!!当然
using应该在你创建新实例的时候使用,但是当你不创建的时候,你不应该使用using,这里依赖注入容器会为你创建实例,容器负责处理,不是你的。
标签: c# .net entity-framework unit-testing