2010-09-02 55 views
3

我無法重置StructureMap的配置。這隻有當我運行全部我的測試質量。以前的測試是注入SingleInvoicePresenter的一個實例,但是當我進入這個測試的時候,我需要所有的緩存消失。我認爲ResetDefaults()將清除任何先前注入的對象了,但斷言(當與所有其他的測試運行)這個測試失敗StructureMap清除緩存實例

StructureMap.ObjectFactory.ResetDefaults(); 
    StructureMap.ObjectFactory.Configure(x => { x.For<SingleInvoicePresenter>().AlwaysUnique(); }); 

    SingleInvoicePresenter P1 = StructureMap.ObjectFactory.GetInstance<SingleInvoicePresenter>(); 
    SingleInvoicePresenter P2 = StructureMap.ObjectFactory.GetInstance<SingleInvoicePresenter>(); 

    Assert.AreNotSame(P1, P2); 

編輯 - 我會認爲這甚至會工作,而行

StructureMap.ObjectFactory.Configure(x => { x.For<SingleInvoicePresenter>().AlwaysUnique(); }); 

但它失敗有或沒有它。

回答

1
StructureMap.ObjectFactory.EjectAllInstancesOf<SingleInvoicePresenter>(); 
1

在你的單元測試中應該避免使用結構圖的全局objectfactory。相反,在您的測試設置中,您需要創建一個新容器,並將該容器或Icontainer參考傳遞到您的測試系統中。