Estoy llegando a un bloqueo de carretera y me pregunto si las mentes colectivas brillantes aquí pueden ayudar. En ObjC CocoaTouch estoy tratando de burlarme de un objeto que toma los parámetros de estructura y devuelve una estructura. OCMock está tosiendo una bola de pelo, así que traté de envolver con un matcher Hamcrest. No murió. La función/método que estoy probando es como la siguiente:Usando una estructura con OCMock o Hamcrest
- (CLLocationCoordinate2D)pixelToLatLong:(CGPoint)aPoint;
utilizo código como este:
#define OCMOCK_STRUCT(atype, variable) [NSValue value:&variable withObjCType:@encode(atype)]
-(void) testMyWidget
{
CLLocationCoordinate2D ulLL = (CLLocationCoordinate2D){123,456};
CLLocationCoordinate2D lrLL = (CLLocationCoordinate2D){654,321};
[[[(id)myObj expect] andReturn:OCMOCK_STRUCT(CLLocationCoordinate2D, ulLL)] pixelToLatLong:(CGPoint){0,0}];
[[[(id)myObj expect] andReturn:OCMOCK_STRUCT(CLLocationCoordinate2D, lrLL)] pixelToLatLong:(CGPoint){320,460}];//lower right point
}
que funciona un poco. Entonces, en mi objeto que estoy probando hago las ediciones necesarias necesarias para obtener una barra verde ... err ... botón verde en la ventana de información de construcción. Cuando estoy seguro de que mi prueba debería pasar, obtengo errores de afirmación fallida. Los errores me informan que el método se invocó inesperadamente y enumera los valores de estas estructuras como signos de interrogación. Traté de envolver las estructuras con los adaptadores de Hamcrest, pero no estoy llegando a ninguna parte. Me estoy preparando para sacar mi depurador que sin duda me mostrará lo que está mal. ¿Alguien aquí ha tenido problemas similares con OCMock/Hamcrest y structs? Si es así, ¿cuál es la mejor manera de manejar estos tipos?