2016-05-31 3 views
2

Я пишу приложение, которое разделяет функции в режиме онлайн и офлайн. В этой функции я использую Reachability для проверки подключения к Интернету и с каждым случаем (онлайн/офлайн), он выполняет разные работы.XCTestCase с футляром для подключения к Интернету

Теперь я должен был написать тестовые примеры для этих бизнес-логик. Я искал везде, но, похоже, никто не заботится о тестовом случае в iOS.

Я хотел бы написать тестовый чехол для обложки как для онлайн, так и для оффлайн. Это возможно в iOS? Если да, то как мне смоделировать статус интернет-соединения?

UPDATE ВОПРОС:

Я также хочу, чтобы покрыть случай переключения из онлайн в оффлайн и наоборот. Должен быть способ имитировать этот статус сетевого соединения, правильно?

+0

Это может быть полезно: [Что высмеивает] (http://stackoverflow.com/questions/2665812/what-is-mocking), [OCMock] (http://ocmock.org). – FreeNickname

ответ

3

Вы должны издеваться возвращаемое значение с помощью OCMock

id reachabilityMock = OCMClassMock([Reachability class]); 
[OCMStub([reachabilityMock currentReachabilityStatus]) andReturnValue:@(ReachableViaWiFi)]; 
[OCMStub([reachabilityMock reachabilityForInternetConnection]) andReturn:reachabilityMock]; 
Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
XCTAssertEqual(reachability.currentReachabilityStatus, ReachableViaWiFi); 

Затем отправить достижимости изменено уведомление вручную.

[[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification object: noteObject]; 
+0

Привет, извините за поздний комментарий. У меня есть статический одноэлементный объект, в котором есть экземпляр «Reachability» для проверки изменений в Интернете. Этот объект инициализируется вместе с объектом достижимости ** ПЕРЕД ** установкой теста, поэтому макет не работает со своим свойством. Как я могу обойти это? – Eddie

+0

Возможно, вам нужно будет использовать метод swizzling для издевки перед инициализацией синглтона. – Bing

+0

Спасибо, я свяжусь с вами позже после тестирования метода swizzling. Это выглядит мило. – Eddie

Смежные вопросы