Цель C - Ocmock и загрязнение?
-
28-10-2019 - |
Вопрос
Возможно ли иметь фактический объект класса и только издеваться над методом в этом классе, а не издеваться над всем объектом?
Я хочу, чтобы объект вели себя на 100% так же, как и реальный объект, кроме 1 метода.
Бывший:
MyObject *object = [[MyObject alloc] init];
[[[object stub] andReturn:@"some_string"] getMyString];
Решение
Да, вот для чего нужны частичные макет.
Частичные макет
id amock = [ocmockobject partialmockforobject: anobject
Создает фиктивный объект, который можно использовать так же, как и anobject. Когда метод, который не загрязнен, вызывается, он будет перенаправлен в Anobject. Когда загрязненный метод вызывается с использованием ссылки на Anobject, а не к макету, он все равно будет обрабатываться макетом.
Обратите внимание, что в настоящее время частичные макет не могут быть созданы для случаев бесплатных мостовых классов, например, NSString.
Другие советы
Вы можете увидеть на документации:10.3 Частичные макет не могут быть созданы для определенных специальных классов