У меня есть метод, который мне нужно заглушить. Метод имеет следующий вид:
BOOL myMethodWithError:(*__autoreleasing *NSError)error;
Поэтому я издевался над объектом и пытался вернуть ноль обратно через «ошибку». Я закодировал это следующим образом.
id mockMyObject = [OCMockObject mockForClass:[MyObject class]];
BOOL retVal = YES;
NSError *error = nil;
[[[mockMyObject stub] andReturn:OCMOCK_VALUE(retVal)] myMethodWithError:&error];
Когда тест запускается и фиктивный объект работает, идентификатор ссылки на ошибку изменяется. Итак, макет выдает исключение:
OCMockObject[MyObject]: вызван ожидаемый метод: myMethodWithError:0xbfffca78
Я пробовал несколько разных способов, но каждый раз значение указателя меняется после того, как объект ошибки передается методу, который заставляет фиктивный объект вызывать ошибку.
Мне просто нужно проверить мои бизнес-правила на соответствие значению аргумента, передаваемому по ссылке, но я не могу заставить фиктивный или тестовый объект сотрудничать.
Заранее спасибо, любая помощь будет принята с благодарностью.