使用spring.net进行IoC的服务模拟
本文关键字:服务 模拟 IoC 进行 spring net 使用 | 更新日期: 2023-09-27 17:49:41
我正在为使用spring.net IApplicationContext解析类型的现有系列类创建单元测试,我想模拟spring.net解析的依赖项。
我在获得spring.net使用我的模拟对象时遇到了问题,基本上是在实际应用程序中获得ContextRegistry.GetContext()来返回它们。到目前为止,我发现的最佳解决方案是类似于此的东西,但在实际的单元测试代码中管理不是很干净,或者在飞行中定义我自己的IApplicationContext并将其注册在具有相同问题的注册表中。
我的问题是,我是否缺少一些将这些东西联系在一起的框架,或者我可以使用的一些模式,使我能够轻松地定义事物。
您的类使用IApplicationContext
作为服务定位器。许多人认为"服务定位器"是一种反模式。我建议你对此形成自己的看法;如果您同意它是一个反模式,那么您可以利用这个机会分解出对IApplicationContext
的依赖,并用对类所需对象的显式依赖来替换它们。
如果你(必须)坚持目前的方法,那么恐怕很难得到一个干净的解决方案。在您的情况下,我会专门为测试配置我的容器(可能包括您链接的博客文章中描述的模拟),并使用Spring.net单元测试支持轻松连接我的测试对象。但是我会觉得很不舒服——就像你一样……