如何在 Objective C 单元测试中检查私有成员?
考虑此类:
@interface SampleClass : NSObject {
NSMutableArray *_childs;
}
- (void)addChild:(ChildClass *)child;
- (void)removeChild:(ChildClass *)child;
@end
当我添加子级时,如果 _childs 数组包含一个对象而不添加属性来访问它,我如何测试(因为我不想允许客户端代码访问 _childs 数组)?
Considering this class :
@interface SampleClass : NSObject {
NSMutableArray *_childs;
}
- (void)addChild:(ChildClass *)child;
- (void)removeChild:(ChildClass *)child;
@end
How can i test when i add a child if the _childs array contains one object without adding a property to access it (because i don't want allow client code to access the _childs array) ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在类扩展中为其创建一个
@property
并将该属性用于所有访问,这样您就可以测试和使用相同的代码。Create a
@property
for it in the class extension and use the property for all accesses, that way you are testing and using the same code.我不确定我是否正确理解了您的问题,我将其解析为:在实现
addChild:
时,如何防止将对象再次插入_childs
?有两种方法:如果元素的顺序并不重要,那么您应该简单地使用
NSMutableSet
而不是NSMutableArray
。在这种情况下,该集合会处理所有事情:如果顺序很重要,请坚持使用
NSMutableArray
并执行以下操作:I'm not sure I correctly understand your question, I parse it as: While implementing
addChild:
, how do I prevent to insert objects a second time into_childs
?There are two ways: if the order of your elements doesn't matter then you should simply use a
NSMutableSet
instead of anNSMutableArray
. In this case the set takes care of everything:If order is important, stick with the
NSMutableArray
and do it like this:只需创建一个 -(int)childCount 方法来返回数组的计数。
Just make a -(int)childCount method that returns the count of the array.