Iphone 在iOS中进行单元测试时正确的依赖项注入

Iphone 在iOS中进行单元测试时正确的依赖项注入,iphone,ios,unit-testing,dependency-injection,Iphone,Ios,Unit Testing,Dependency Injection,我终于开始在开发iOS应用程序时测试我的代码了。然而,我很想更多地了解其他人是如何创建可测试代码的,特别是当涉及到向被测试类中注入假对象时。到目前为止,我是这样做的: //1)带假货的初始切割(构造师注入) A*A=[A alloc]initWithB:C:D:…] //2)将依赖项作为属性公开(属性注入) a、 B=myB 我更喜欢1)因为我不喜欢将任何内部数据作为属性公开,除非我真的需要 我的问题是:在处理objective-c和iOS测试框架时,是否有其他方法/更好/更有效的方法进行属性注

我终于开始在开发iOS应用程序时测试我的代码了。然而,我很想更多地了解其他人是如何创建可测试代码的,特别是当涉及到向被测试类中注入假对象时。到目前为止,我是这样做的:

//1)带假货的初始切割(构造师注入) A*A=[A alloc]initWithB:C:D:…]

//2)将依赖项作为属性公开(属性注入) a、 B=myB

我更喜欢1)因为我不喜欢将任何内部数据作为属性公开,除非我真的需要


我的问题是:在处理objective-c和iOS测试框架时,是否有其他方法/更好/更有效的方法进行属性注入?

现在已经有一段时间了,自从我提出这个问题以来,我有机会使用不同的解决方案。现在,在大多数情况下,我更喜欢组合。如果类a依赖于类B,我将使用B的实例初始化a,如下所示:

A* myA = [[A alloc] initWithB:myB];
除此之外,我还将B作为属性公开,以便在运行时切换它。在某些情况下,接口模式甚至更可取

- (id)initWithBy:(id<bProtocol>)aB;
-(id)initWithBy:(id)aB;
这显然不适合所有情况,但我发现这是一种将依赖项注入到类中从而使它们更易于测试的好方法