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