偏爱部分模拟的依赖注入?

我知道这个问题,但它用更一般的术语来处理这个问题。 我是否更喜欢使用部分模拟而不是依赖注入?我的问题是基于OCMock的以下引用:
id aMock = [OCMockObject partialMockForObject:anObject]
  创建可以使用的模拟对象   与anObject相同。当一个   调用未存根的方法   它将被转发anObject。当一个   使用a调用stubbed方法   引用anObject,而不是   嘲笑,它仍然会被处理   嘲笑。 这意味着我可以使用部分模拟来取消我的(属性)依赖,而不是在构造函数中注入它们(或通过setter注入)。     
已邀请:
您应该设计API,使其作为通用API有意义,而不是特别支持单元测试或动态模拟。 您建议的模式只是模板方法设计模式的变体,除了该方法是属性。如果您认为通常将依赖关系访问实现为虚拟属性是有意义的,那么您可以使用您描述的技术。这是一种众所周知的单元测试技术,称为提取和覆盖。 但是,由于其他一些原因,我会做各种各样的事情。 即使您可以覆盖依赖关系,默认情况下也可能会拖动对“真实”的预期依赖性的引用,从而创建比您想要的更紧密的耦合。 如果您忘记提取和覆盖,则使用默认依赖项,您可能不希望这样。有时最好明确预期的用法。     

要回复问题请先登录注册