StructureMap清除缓存实例

3

我在重置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个回答

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

1

在单元测试中应避免使用StructureMap的全局对象工厂。相反,在测试设置中,您需要创建一个新容器并将其或IContainer引用传递到您要测试的系统中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接