Создание 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);