OCMock возвращает значения - PullRequest
       6

OCMock возвращает значения

4 голосов
/ 23 октября 2009

Я пытаюсь написать тест для метода, вывод которого зависит от возвращаемого значения NSDate timeIntervalSinceNow. Я хотел бы указать возвращаемое значение в моих тестах, чтобы я мог протестировать определенные сценарии.

Мне очень трудно заставить этот объект OCMock возвращать то, что я хотел бы. Вот мой код:

id mock = [OCMockObject mockForClass:[NSDate class]];
NSTimeInterval t = 20.0;
[[[mock stub] andReturnValue:OCMOCK_VALUE(t)] timeIntervalSinceNow];
STAssertEquals([mock timeIntervalSinceNow], 20.0, @"Should be eql.");

При этом генерируется ошибка: ожидаемый список спецификаторов-спецификаторов перед ошибкой typeof.

Есть мысли? Я новичок в ObjC, поэтому любые другие полезные советы приветствуются.

Спасибо.

1 Ответ

5 голосов
/ 23 октября 2009

На самом деле, это ошибка компилятора, а не ошибка OCMock. Это как-то связано с тем, как работает макрос OCMOCK_VALUE(t). Он определяется как:

#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]

Директива typeof () не является частью C89, поэтому убедитесь, что вы установили для своего компилятора флаг std=gnu89 или std=gnu99. Согласно документации Apple, если вы установите его на Compiler Default, это эквивалентно gnu89, что тоже хорошо.

Это, вероятно, причина вашей ошибки.

...