【发布时间】:2013-10-29 13:22:32
【问题描述】:
我在 ASP.NET 项目(不是 MVC)中使用 Unity。似乎单元测试需要了解 Unity,创建一个 IoC 容器并将 Mocks 插入其中,这与我使用的其他单元测试框架不同。
使用 Unity 解析类的示例似乎是:
public class Foo
{
[Dependency]
private ILogger Logger { set; get; }
}
或直接从容器中解析:
UnityTest.Interfaces.IMenuBL ser = Global.Container.Resolve<UnityTest.Interfaces.IMenuBL>();
是否有可能在非 MVC ASP.NET 中让 Unity 执行构造函数注入,以便我的单元测试不绑定到我的 IoC 容器?
干杯
戴夫
【问题讨论】:
-
如果您使用 Web 表单,您可以进行属性注入。 David Hayden 有一个截屏视频,展示了如何做到这一点,但我再也找不到了。我写了一篇关于如何使用 ASP.NET Web 服务做到这一点的文章,它应该很容易让您适应它并将其与 Web 窗体一起使用:ruijarimba.wordpress.com/2011/12/27/…
-
感谢 Rui,我不认为这是 Unity 的技术。是否有任何 IoC 容器能够在 WebForms 上提供构造函数注入?
-
不,这不是 Unity 特定的事情,我认为您在使用其他 IoC 容器时也会遇到同样的问题。我知道属性注入并不理想,但这就是您必须使用 ASP.NET Web 窗体... :(
-
@RuiJarimba,如果您想在下面添加“您无法使用任何当前的 IoC 框架和 WedForms 执行构造函数注入”作为答案,那么我会将其标记为正确。
标签: asp.net .net unit-testing inversion-of-control unity-container