2016-05-31 1 views
2

J'écris une application qui a des fonctions séparées en ligne et hors ligne. Dans ces fonctions, j'utilise Reachability pour vérifier la connexion Internet et dans chaque cas (en ligne/hors ligne), il fait des travaux différents.XCTestCase avec le cas de connexion Internet

Maintenant, j'ai été obligé d'écrire des cas de test pour ces logiques métier. J'ai cherché partout, mais il semble que personne ne se soucie beaucoup de cas de test dans iOS.

Je voudrais écrire testcase cette couverture pour les deux cas en ligne/hors ligne. Est-ce possible sur iOS? Si oui, comment puis-je simuler l'état de la connexion Internet?

QUESTION DE MISE À JOUR:

Je veux aussi couvrir le cas de commutation de ligne hors ligne et vice versa. Il devrait y avoir un moyen de simuler ce statut de connexion réseau, non?

+0

Cela pourrait être utile: [? Qu'est-ce que se moque] (http://stackoverflow.com/questions/2665812/what-is-mocking), [OCMock] (http://ocmock.org). – FreeNickname

Répondre

3

Vous devez railler la valeur de retour à l'aide OCMock

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

ensuite envoyer une notification changé manuellement joignabilité.

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

Salut, désolé pour le commentaire tardif. J'ai un objet singleton statique, qui contient une instance de 'Reachability' pour vérifier les changements internet. Cet objet est en cours d'initialisation avec l'objet d'accessibilité ** AVANT ** la configuration du test, de sorte que le simulacre ne fonctionne pas avec sa propriété. Comment puis-je contourner cela? – Eddie

+0

Vous devrez peut-être utiliser la méthode swizzling pour simuler avant l'initialisation du singleton. – Bing

+0

Merci, je vous contacterai plus tard après la méthode de test swizzling. Ça à l'air bien. – Eddie