Как вы издеваетесь над частными объектами в OCMock для iOS?

У меня есть частное свойство, которое объявлено в файле .m файла моего класса для тестирования, позвольте ему назвать ClassUnderTest. ClassUnderTest создает экземпляр класса ClassToBeMocked. Как использовать OCMock для извлечения экземпляра класса ClassToBeMocked и присвоения ему класса ClassUnderTest?

Ответ 1

Повторно объявить свойство в вашем тестовом классе. Вы можете сделать то же самое для частных методов. В ClassUnderTestTest.m:

@interface ClassUnderTest ()

@property(retain)ClassToBeMocked *instanceToBeMocked;

-(void)somePrivateMethod;

@end

Ответ 2

Выполняется ли следующее?

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

Не совсем уверен, можете ли вы установить частные свойства, подобные этому. Я думаю, это зависит от того, что это за собственность.