【发布时间】:2018-06-13 14:33:37
【问题描述】:
我有一个带有多个 REST API 控制器的网络应用程序。该控制器使用 SimpleInjector 根据this tutorial 获得注入的存储库。我想在我的项目中添加一些端到端测试,以确保控制器的方法调用以可预测的方式影响数据库(我使用的是 EF6、MySQL、代码优先)。我打算使用this plan 来测试我的应用程序。我喜欢整体方法,但似乎在这种方法中作者将数据库上下文直接输入控制器。在我的情况下,我有一个控制器,它从构造函数获取注入的存储库,然后存储库被注入 DbContext。显然,我可以硬编码创建 DbContext、实例化 Repository 然后实例化 Controller 的链,但这有点违背了使用 SimpleInjector 的目的,不是吗?我认为应该有更透明的方式。
基本上我想在我的测试中注入单独的数据库。当服务器运行时,它使用一个数据库,当测试运行时,它们使用另一个临时数据库。
我的测试类在一个单独的项目中,所以我需要一种方法来从主项目中实例化我的控制器和存储库。我也不确定我该怎么做。以某种方式从另一个项目中公开我的SimpleInjector.Container 是个好主意吗?
附加信息:我正在使用 .Net Framework(非核心),除非需要,否则我想暂时不使用模拟进行管理。
【问题讨论】:
标签: c# asp.net asp.net-web-api simple-injector