Я вхожу в блокпост и мне интересно, могут ли блестящие коллективные умы здесь помочь. В ObjC CocoaTouch я пытаюсь смоделировать объект, который принимает параметры структуры и возвращает структуру. OCMock кашляет волосяным шариком, поэтому я попытался обернуть его средством для подбора Hamcrest Нет, умри. Тестируемая функция / метод выглядит примерно так:
- (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 и структурами? Если да, то как лучше всего справиться с этими типами?