Используя структуру с OCMock или Hamcrest

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

9
задан Cliff 5 February 2009 в 15:24
поделиться

2 ответа

Иногда макет для ручной кодировки проще, чем пытаться привлечь цену MOCK Object Framework за пределами его нормальных шаблонов использования.

0
ответ дан 4 December 2019 в 22:30
поделиться

Вы очень близки. Ваш #define должен быть:

#define OCMOCK_STRUCT(atype, variable) [NSValue valueWithBytes:&variable withObjCType:@encode(atype)]
3
ответ дан 4 December 2019 в 22:30
поделиться