StructureMap清除缓存的实例

时间:2010-09-02 15:31:01

标签: structuremap

我无法重置StructureMap的配置。这只有在我运行所有我的测试质量时才会失败。以前的测试是注入SingleInvoicePresenter的一个实例,但是当我进入这个测试时,我需要所有的缓存都消失了。我认为ResetDefaults()会清除所有先前注入的对象,但是这个测试在断言上失败(当与所有其他测试一起运行时)

    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(); });

但无论有没有它都会失败。

2 个答案:

答案 0 :(得分:1)

StructureMap.ObjectFactory.EjectAllInstancesOf<SingleInvoicePresenter>();

答案 1 :(得分:1)

在单元测试中应避免使用structuremap的全局objectfactory。而是在测试设置中,您需要创建一个新容器,并将该容器或Icontainer引用传递到您正在测试的系统中。