Как протестировать сенсорное приложение Cocoa на случай сбоя сети во время загрузки файла? - PullRequest
2 голосов
/ 28 января 2011

Мое приложение iOS, среди своих возможностей, загружает файлы с определенного сервера.Эта загрузка происходит полностью в фоновом режиме, пока пользователь работает над приложением.Когда загрузка завершена, ресурс, связанный с файлом, появляется на экране приложения.

Мои пользователи сообщают о некоторых случаях неправильного поведения из-за отсутствующих ресурсов, которые я не смог воспроизвести.Некоторая дополнительная информация заставляет меня подозревать, что проблема вызвана прерыванием загрузки файла ресурса на полпути.Тогда в приложении есть частично загруженный файл, который так и не будет завершен.

Чтобы подтвердить гипотезу, убедиться, что исправление работает, и проверить, нет ли такой случайной сети, исчезающей у меня под ногами, я хотел бы смоделировать потерюсети в моей тестовой среде: тестовый сервер - это общий доступ к сети на моем Mac для разработки, тестовое устройство - симулятор iOS, работающий на том же Mac.

Есть ли более удобный способ сделать это, чем вручнуюотключить общий доступ к сети в точке останова?

1 Ответ

0 голосов
/ 29 января 2011

В зависимости от того, как вы загружаете свой файл, одним из возможных вариантов будет установка делегата обратного вызова на ноль в середине загрузки.Он все равно будет загружать данные, но ваше приложение просто перестанет получать обратные вызовы.Хотя я не знаю, будет ли приложение работать так, если оно действительно разорвет соединение.

Другой вариант - временно направить запрос на загрузку некоторому случайному файлу на внешнем веб-сервере, а затем на полпути.просто отключите компьютер от интернета.Я сделал это, чтобы проверить проблемы с сетевым подключением, и это обычно работает.Интересная проблема в вашем случае заключается в том, что вы скачиваете со своего компьютера, поэтому отключение не поможет.Это было бы просто для того, чтобы вы могли определить порядок обратных вызовов в приложении, когда это происходит, (выполняет ли он какие-либо обратные вызовы вообще? В каком порядке?), Чтобы вы могли смоделировать это поведение, когда оно фактически указывает на ваш тестовый сервер.

Объедините оба варианта, я думаю, чтобы получить лучшее решение.

...