我在一个 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>();
是否有可能在 non-MVC ASP.NET 中让 Unity 执行构造函数注入,以便我的单元测试不依赖于我的 IoC 容器?
干杯
戴夫
1 回答
ASP.NET Web 表单在设计时没有考虑可测试性。您无法使用 Web 窗体进行构造函数注入,至少在没有使用某些狡猾的解决方法(如创建页面处理程序)的情况下 - 请参阅如何在 ASP.NET Web 窗体中使用依赖注入。
最好的选择是使用属性注入。
编辑:您可以考虑使用MVP 模式来提高 Web 窗体页面的可测试性:
MSDN - 使用 MVP 模式改进 Web 表单