objective-c ios cocoa-touch unit-testing ocmock

objective c - ¿Cómo te burlas de las propiedades privadas con OCMock para iOS?



objective-c cocoa-touch (2)

¿Funciona lo siguiente?

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

No estoy totalmente seguro de si puedes establecer propiedades privadas como esta. Creo que depende de qué tipo de propiedad es.

Tengo una propiedad privada que está declarada en el archivo .m de mi clase que se va a probar, llamémosla ClassUnderTest. ClassUnderTest crea una instancia de ClassToBeMocked. ¿Cómo uso OCMock para simular una instancia de ClassToBeMocked y asignarlo a ClassUnderTest?


Volver a declarar la propiedad en su clase de prueba. Puedes hacer lo mismo para los métodos privados. En ClassUnderTestTest.m:

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