如何检查客观C单元测试中的私人成员?

时间:2011-10-13 17:06:34

标签: objective-c xcode unit-testing

考虑这个课程:

@interface SampleClass : NSObject {
    NSMutableArray *_childs;
}

- (void)addChild:(ChildClass *)child;
- (void)removeChild:(ChildClass *)child;

@end

如果_childs数组包含一个对象而没有添加属性来访问它,我如何测试添加子项时(因为我不希望允许客户端代码访问_childs数组)?

3 个答案:

答案 0 :(得分:6)

在类扩展中为它创建一个@property,并使用该属性进行所有访问,这样就可以测试并使用相同的代码。

答案 1 :(得分:1)

我不确定我是否正确理解了您的问题,我将其解析为:在实施addChild:时,如何阻止第二次将对象插入_childs

有两种方法:如果元素的顺序无关紧要,那么您只需使用NSMutableSet而不是NSMutableArray。在这种情况下,该集合处理所有事情:

- (void)addChild:(ChildClass *)child
{
    [_childs addObject:child];
}

如果订单 很重要,请坚持使用NSMutableArray并按照以下方式执行操作:

- (void)addChild:(ChildClass *)child
{
    if ([_childs containsObject:child]) return;

    [_childs addObject:child];
}

答案 2 :(得分:0)

只需创建一个 - (int)childCount方法,该方法返回数组的计数。