OCMock распространяется как фреймворк, и iPhone не позволяет вам создавать собственные произвольные фреймворки (есть веские причины делать это на устройстве с 128 МБ ОЗУ и без подкачки).
Решение, которое я вижу во многих местах в Интернете, состоит в том, чтобы поместить OCMock.framework в / Library / Frameworks или где-либо еще в стандартные пути поиска фреймворка. Это не очень хорошее решение: ваша система сборки теперь зависит от состояния вашей конкретной машины. Не хорошо.
Другим вариантом будет добавление источника для OCMock к вашей цели модульного тестирования. Это будет работать, но не обязательно, поскольку ваши тесты никогда не будут выполняться на iPhone 2, так зачем же создавать их для ARM? Исполняемые файлы, созданные для симулятора iPhone, являющиеся двоичными файлами Mac OS X, могут отлично связываться с динамическими библиотеками. Мы можем использовать это в наших интересах.
Ниже следует то, что я считаю лучшим способом заставить OCMock работать с проектами iPhone:
Сначала добавьте OCMock.framework в свой проект. Убедитесь, что он добавлен к вашей цели модульных тестов, а не к вашему приложению.
Затем добавьте фазу «Копирование файлов» в цель «Юнит-тесты». Настройте это так:
Назначение: Абсолютный Путь
Полный путь: $ (BUILT_PRODUCTS_DIR)
Теперь перетащите OCMock.framework на новую фазу копирования файлов, чтобы добавить его в список файлов для копирования.
Наконец, перетащите фазу Copy Files, которую я переименовал в «Copy OCMock», между фазами Compile Sources и Link Binary With Libraries.
Вот и все! Запустите (и я имею в виду под сборкой) ваши тесты, и все должно работать правильно.