因此,在我基于CQRS的错误跟踪Web-API中,我在进行和实施单元测试之前重构了我的代码(诚然,应该首先考虑); 我有这个类和构造函数:
public class BugCommandHandler : IBugCommandHandler
{
private BugContext db;
public BugCommandHandler(BugContext bugContext)
{
db = bugContext;
}
//Interface implementation
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我有这个:
public class BugsController : Controller
{
private IBugCommandHandler commandHandler;
private BugContext db;
public BugsController(BugContext bugContext, IBugCommandHandler bugCommandHandler)
{
db = bugContext;
commandHandler = bugCommandHandler;
}
}
Run Code Online (Sandbox Code Playgroud)
最后,在我的Startup类中,我已经注入了依赖项
services.AddSingleton<IBugCommandHandler, BugCommandHandler>();
Run Code Online (Sandbox Code Playgroud)
我的单元测试和手动集成测试都工作正常,因为我在没有DI时手动调用它.
现在
如何BugCommandHandler实现如何在构造函数中使用数据库上下文调用(幕后"魔术")?它实现这一目标的过程是什么?
我已经签出(不喜欢那个)一些在GitHub库的源代码,但不能真正找到这个地方可能会发生.
我可能会忽略一些关键的东西,或者它可能只是被隐藏得很好,因为它仍处于预发布状态.