1

我在 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 容器?

干杯

戴夫

4

1 回答 1

2

ASP.NET Web 窗体的设计并未考虑可测试性。您不能使用 Web 窗体进行构造函数注入,至少在不使用一些狡猾的解决方法(例如创建页面处理程序)的情况下不能 - 请参阅如何将依赖注入与 ASP.NET Web 窗体一起使用

最好的选择是使用属性注入。

编辑:您可以考虑使用MVP 模式来提高 Web 表单页面的可测试性:

MSDN - 使用 MVP 模式的更好的 Web 表单

于 2013-10-29T15:03:27.717 回答