4

我试图完成一个看似超级简单的事情:从我的单元测试中,我想用模拟/假对象替换正在解析的类型。从Windsor容器中删除或覆盖一个组件

例如:xml配置表明服务IInterface的组件应解析为ClassA。这很好,但是从我的单元测试中,我希望类型能够解析为FakeClassA。我不能使用container.AddComponent来做这件事,因为那里“是一个已经注册过给定键的组件......”。

+0

另请参阅:如何使用Castle 3.0删除组件? http://stackoverflow.com/questions/9501209/how-are-components-removed-with-castle-3-0 – Anthony 2013-01-17 11:30:36

回答

3

IKernel有一个RemoveComponent方法。

但是对于单元测试,建议您根本不使用容器,或者如果测试设置由于依赖性而变得过于密集,请使用AutoMockingContainer

Here's另一个(更新的)实现。

+0

RemoveComponent states“如果指定的组件被找到并且可以被移除(即没有其他组件依赖于它)”。但是如果我们不关心其他东西是否依赖于它,我们将在下一行代码中替换它。 – crowleym 2009-06-04 11:22:19