Создание CLPlacemark с пользовательскими значениями для тестирования

У меня есть приложение, которое движется CLPlacemark объекты вокруг и использует их, и я хотел бы протестировать несколько компонентов, которые взаимодействуют с ними. Чтобы сделать это, я хотел бы иметь возможность заглушить вызовы реального обратного геолокации из MapKit с помощью методов, которые производят макет CLPlacemarkс известными значениями.

CLPlacemark имеет только один инициализатор (копировать инициализатор). Но в документации сказано:

Объекты меток обычно создаются объектом CLGeocoder, хотя вы также можете создавать их самостоятельно.

Тем не менее, большинство членов только для чтения, поэтому я не уверен, как создать один с пользовательскими значениями. Можно ли таким образом установить внутренние свойства в Swift? Если нет, есть идеи относительно того, что они значат в приведенной выше цитате?

1 ответ

Решение

Я бы использовал OCMock ( http://ocmock.org/), чтобы заглушить вызовы для создания объектов-заглушек CLPlacemark, и заглушить их методы получения с вашими собственными значениями.

id userDefaultsMock = OCMClassMock([CLPlacemark class]);

// set it up to return a specific value when stringForKey: is called
OCMStub([userDefaultsMock property]).andReturn(customValue);
Другие вопросы по тегам