你如何使用OCMock for iOS模拟私有属性?

时间:2012-08-09 23:37:03

标签: objective-c ios cocoa-touch unit-testing ocmock

我有一个在我的类的.m文件中声明的私有属性,我们称之为ClassUnderTest。 ClassUnderTest实例化ClassToBeMocked的实例。如何使用OCMock模拟ClassToBeMocked的实例并将其分配给ClassUnderTest?

2 个答案:

答案 0 :(得分:48)

在测试类中重新声明属性。您可以对私有方法执行相同操作。在ClassUnderTestTest.m中:

@interface ClassUnderTest ()

@property(retain)ClassToBeMocked *instanceToBeMocked;

-(void)somePrivateMethod;

@end

答案 1 :(得分:1)

以下是否有效?

id classUnderTest = ... // get from somewhere
id mock = [OCMockObject mockForClass:[ClassToBeMocked class]];
[classUnderTest setValue:mock forKey:@"nameOfThatPrivateProperty"];

不完全确定您是否可以设置这样的私有属性。我认为这取决于它是什么类型的财产。