Как частичное макетирование объектов одного и того же класса дважды в OCMock 3.4.2? - PullRequest
0 голосов
/ 12 ноября 2018
EKSource *source1 = [[EKSource alloc] init];
EKSource *source2 = [[EKSource alloc] init];

id source1Mock = OCMPartialMock(source1);
[[[source1Mock stub] andReturnValue:@(EKSourceTypeBirthdays)] sourceType];

id source2Mock = OCMPartialMock(source2);
[[[source2Mock stub] andReturnValue:@(EKSourceTypeCalDAV)] sourceType];

NSLog([source1 sourceType]); # Getting EKSourceTypeLocal instead of EKSourceTypeBirthdays
NSLog([source2 sourceType]); # Getting EKSourceTypeCalDAV. Expected behaviour.

Я пытаюсь частично смоделировать два объекта класса EKSource, как показано выше. После имитации объекта source2, source1Mock прекращает имитацию. Как решить эту проблему ? Я не заметил этой проблемы в OCMock 3.4.1.

1 Ответ

0 голосов
/ 11 марта 2019

Ваша реализация верна. В версии 3.4.1 OCMock есть ошибка ошибка . Ошибка была исправлена ​​в версии 3.4.3 - см. примечания к выпуску .

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

например. OCMock([source1 sourceType]).andReturn(@(EKSourceTypeBirthdays))

...