你如何嘲笑iOS的OCMock的私人财产?

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

重新声明你的testing类中的属性。 您可以为私有方法执行相同的操作。 在ClassUnderTestTest.m中:

@interface ClassUnderTest () @property(retain)ClassToBeMocked *instanceToBeMocked; -(void)somePrivateMethod; @end 

以下工作?

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

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