嘲弄IoC容器?

Dav*_*man 2 unit-testing prism moq mocking

模拟IoC容器是否有意义?如果是这样,我将如何使用Moq?

我正在使用Unity 2.0作为IoC容器创建一个Prism 4应用程序.我将容器注入需要其服务的类,而不是使用Prism ServiceLocator.对于单元测试,除非我需要其他Prism服务进行测试,否则我只需实例化容器并使用它注册模拟.我将容器传递给测试中的类,这样可以解决模拟问题.

这一切都相当简单,但我想知道我是否应该嘲笑容器?为什么?如果是这样,如果我使用Moq作为我的模拟框架,我该怎么做?谢谢你的帮助.

Mar*_*ann 10

不,模拟DI容器没有意义,因为应用程序类根本不应该引用容器.

您应该只注入他们需要的服务,而不是将容器注入到类中.这也意味着您可以在不引用DI容器的情况下对它们进行单元测试.

  • 你是否厌倦了一遍又一遍地回答同样的问题? (3认同)
  • 我挖了马克的书 - 这很好.它正在清理我已经捣乱了一段时间的DI的许多令人费解的方面.非常值得,我在这里更好地理解马克的答案.对于研究这个问题的其他人来说 - 这是非常基础的.非常值得花几天时间解决这个问题.我在研究问题时所获得的理解(大部分使用Mark的书)将导致我设计应用程序的方式发生重大变化 - 变得更好. (2认同)