代码之家  ›  专栏  ›  技术社区  ›  n8wrl

Spring:删除singleton

  •  1
  • n8wrl  · 技术社区  · 17 年前

    ContextRegistry.GetContext().GetObject("ISomething")
    

    如果一个东西没有定义,那也没关系。所以我试着用两种方法来测试它。由于此定义通常来自app.config文件,并且我不想在测试之间编辑该文件,因此我使用[TestFixtureSetUp]和[TestFixtureTearDown]注册singleton、test,然后我想“取消”注册它。这很好:

    ...ObjectFactory.RegisterSingleton("ISomething", new SomethingMOCK());
    

    if (...ObjectFactory.ContainsSingleton("ISomething"))
    

    但我似乎无法删除我注册的单身汉。我尝试使用null:

    ...ObjectFactory.RegisterSingleton("ISomething", null);
    

    但这是一个错误。有更好的办法吗?

    3 回复  |  直到 17 年前
        1
  •  2
  •   Darin Dimitrov    17 年前

    据我所知,不存在这样的特征。无论如何,这会很棘手。如果单例在最终删除之前已经连接到其他对象,那么语义应该是什么?可能无法将对象属性重新设置为null,因为您不能假定受影响的属性允许null。如果对象是通过构造函数注入连接的,那么甚至可能没有setter方法。

        2
  •  0
  •   Erich Eichinger    17 年前

    除此之外,您始终可以使用新的XmlApplicationContext(“assembly://myconfigresource当然,您可能还想查看Spring.NET对此的单元测试支持。参考文件包含一个专门的章节: http://www.springframework.net/doc-latest/reference/html/testing.html

    嗯,,

        3
  •  0
  •   Beachwalker    13 年前

    如前所述:不可能开箱即用,

    推荐文章