Я натыкаюсь на препятствие, и мне интересно, могут ли здесь помочь блестящие коллективные умы. В ObjC CocoaTouch я пытаюсь смоделировать объект, который принимает параметры структуры и возвращает структуру. OCMock кашляет комком волос, поэтому я попытался обернуть его с помощью Hamcrest Matcher. Нет смерти. Функция/метод, который я тестирую, выглядит примерно так:
- (CLLocationCoordinate2D)pixelToLatLong:(CGPoint)aPoint;
Я использую такой код:
#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
}
Это вроде работает. Итак, в моем объекте, который я тестирую, я вношу необходимые необходимые изменения, чтобы получить зеленую полосу... э-э... зеленую кнопку в окне информации о сборке. Когда я уверен, что мой тест должен пройти, я получаю ошибки утверждения. Ошибки сообщают мне, что метод был вызван неожиданно и перечисляет значения для этих структур как вопросительные знаки. Я пытался обернуть структуры сопоставителями Hamcrest, но ничего не получаю. Я готов развернуть свой отладчик, который, без сомнения, покажет мне, что не так. У кого-нибудь здесь были подобные проблемы с OCMock/Hamcrest и структурами? Если да, то как лучше всего обращаться с этими типами?