我无法重置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(); });
但无论有没有它都会失败。
答案 0 :(得分:1)
StructureMap.ObjectFactory.EjectAllInstancesOf<SingleInvoicePresenter>();
答案 1 :(得分:1)
在单元测试中应避免使用structuremap的全局objectfactory。而是在测试设置中,您需要创建一个新容器,并将该容器或Icontainer引用传递到您正在测试的系统中。