【发布时间】:2010-03-12 22:07:58
【问题描述】:
只是试图在棕地类型系统中实施单元测试。请注意,我对单元测试世界还比较陌生。当然,这将是一个渐进的迁移,因为痛苦的领域太多了。
我正在尝试解决的当前问题是,我们在 VB6 时代以及将我们的应用程序转换为 .Net 时遵循了许多不良做法。我们有很多共享/静态函数,它们调用其他共享函数,而那些调用其他函数等等。有时依赖项作为参数传入,有时它们只是在调用函数中更新。我已经指示我们的开发人员停止创建共享函数,而是创建实例成员,并且只在接口之外使用这些实例成员,但这并不能缓解当前的情况。因此,您必须为代码路径中的每个函数递归地在顶层传递每个依赖项,并且方法签名变得一团糟。
我希望这是 IOC 能够解决的问题。目前我们正在使用 NUnit/Moq,我开始研究 StructureMap。到目前为止,我了解您几乎告诉 StructureMap for x interface 我想默认为具体类 y:
ObjectFactory.Initialize(x=>{x.ForRequestType<IInterface>().TheDefaultIsConcreteType<MyClass>()});
然后到运行时:
var mytype = ObjectFactory.GetInstance<IInterface>();
IOC 容器将为您初始化正确的类型。尚不确定如何将假货换成混凝土类型,但希望这很简单。国际奥委会会再次解决我上面谈到的问题吗?是否有一个特定的 IOC 框架会比 StructureMap 做得更好,或者他们都可以处理这种情况。任何帮助将不胜感激。
【问题讨论】:
标签: .net unit-testing ioc-container