1

我终于开始在开发 iOS 应用程序时测试我的代码。但是,我很想知道更多关于其他人如何创建可测试代码的信息,尤其是在将假对象注入到被测类时。到目前为止,这就是我的做法:

// 1) Init CUT with fakes (constructor injection) A *a = [[A alloc] initWithB:C:D:.....];

// 2) 将依赖项暴露为属性(属性注入) aB = myB;

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

我的问题是:在处理 Objective-c 和 iOS 测试框架时,是否有任何替代/更好/更有效的方法来进行属性注入?

4

1 回答 1

0

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

A* myA = [[A alloc] initWithB:myB];

除此之外,我会将 B 作为属性公开,以便可以在运行时切换它。在某些情况下,界面模式甚至更可取。

- (id)initWithBy:(id<bProtocol>)aB;

这显然不适合所有情况,但我发现这是一种将依赖项注入我的类的好方法,从而使它们更具可测试性。

于 2012-10-29T20:31:58.050 回答