Итак, я обнаружил, что при написании тестов XCTests или UI я не могу получить доступ к MOC делегата моего приложения. Я получил некоторую ошибку, которая сказала: «Я - MyAppUITests, и я не могу получить доступ к материалам MyApp».Как использовать mock MOC в моем контроллере view с помощью Ucest Xcode 7?
Прохладный, без проблем, я написал весь свой код, чтобы принять любой MOC, а затем сделал mock MOC в setup(), чтобы каждый XCTest имел новый список, который не касается моих фактических данных. Импортируйте мое приложение в качестве проверяемого. Бум, все работает, мне не нужно менять цели и не писать код в моих объектах, чтобы «заставить его работать для тестирования!».
Проблема в том, что я не уверен, как это сделать для тестов пользовательского интерфейса и раскадровки. Большинство моих контроллеров просмотров получают мой MOC из appdelegate в viewdidload. Я не могу понять, как сказать ему использовать mock moc, чтобы каждый тест можно было начать чистым и чтобы он не использовал мое фактическое хранилище данных ядра, но затем также мог нормально работать, когда не тестировал. Цель здесь состоит в том, чтобы в главном коде приложения не было ссылок на него, зная, что он тестируется.
Должен быть чистый способ сделать это без получения уродливых, изменяющихся целей и т. Д. Что-то, что будет работать, как мои XCTests, но для пользовательского интерфейса. Я нашел это: How to start with empty Core Data for every UI Test Assertion in Swift?, но никто не ответил. Этот пользователь задает аналогичный вопрос, но, похоже, ошибочный подход (освобождение основных данных вместо использования Mock MOC).
Идеи?
Для чего это стоит, я создаю приложение для Mac.
В настоящее время у меня есть только один контроллер вида, поэтому мне не требуется переход между реализацией. Мой вопрос уточнен, используя функцию UITest и раскадровки, как мне снабдить контроллер вида MOC? Это легко сделать при подготовке метода segue, но поскольку тесты находятся вне приложения, я не уверен, как дать ему mock MOC при первом запуске при тестировании. UITests, похоже, не создают экземпляры контроллеров представлений, они нажимают кнопки на экране. – user5503635