Je développe une application iOS qui utilise une API de repos. L'application iOS demande des données sur les threads de travailleurs et stocke les résultats analysés dans les données de base. Tous les points de vue utilisent des données de base pour visualiser les informations. L'API de repos change rapidement et je n'ai aucun contrôle réel sur l'interface. P>
Je cherche des conseils comment effectuer des tests d'intégration pour l'application aussi simple que possible. Devrais-je tester contre l'API ou contre des données simulées? Mais comment se moquer de recevoir des demandes correctement si vous pouvez créer des ressources avec le post ou les modifier avec Met? P>
Quels cadres utilisez-vous pour ces types de problèmes? J'ai joué avec Frank , qui a l'air bien mais est compliqué en raison de modifications rapides d'interface utilisateur dans l'application iOS. Comment testeriez-vous la "couche de demande API" dans l'application? Les fils de travailleurs sont des nsoperations dans une file d'attente - tout est construit de manière asynchrone. Toute recommandation? P>
3 Réponses :
(Comme personne est intervenu encore et vous a donné une solution complète) Mon humble avis: Reculer un peu, sortez la magie de async, tout ce qui concerne que la synchronisation (appels api, analyse syntaxique, persistance), et d'isoler chaque étape comme un consommateur / producteur. Après tout, vous ne wan't pas NSURLConnection test unitaire, ou JSONKit ou quoi (ils auraient été testés si vous les utilisez), vous voulez tester votre code. Votre code prend une entrée et produit une sortie, non conscients du fait que l'entrée était en fait la sortie genereated dans un endroit de fil d'arrière-plan. Vous pouvez faire le test isolé tout synchronisation. P>
Peut-on d'accord sur le fait que vos opinions ne se soucient pas de la façon dont leurs données du modèle ont été fournies? Si oui, eh bien, tester votre vue avec des objets fantaisie. P>
Peut-on se mettre d'accord sur le fait que votre analyseur ne se soucie pas de la façon dont les données ont été fournies? Si oui, eh bien, tester votre analyseur avec des données simulées. P>
couche réseau: applique même que décrit ci-dessus, à la fin vous aurez un NSDictionary des en-têtes, et certains NSData ou NSString de contenu. Je ne pense pas que vous voulez à l'unité test NSURLConnection ou tout api réseau partie 3'rd vous faites confiance (asihttp, afnetworking, ...?), Donc en fin de compte, ce qui est à tester? Vous pouvez railler les URL, les en-têtes de demande et les données POST pour chaque cas d'utilisation que vous avez, et des cas de test de configuration pour les réponses attendues. P>
En fin de compte, à mon humble avis, il est tout au sujet de "normalisant" sur ASYC. P>
Je vous conseillerais vivement de vous moquer du serveur. Les serveurs descendent, le comportement change, et si un test échec em> implique "Peut-être que mon code fonctionne toujours", vous avez un problème sur vos mains, car votre test ne vous dit pas si le code est cassé, qui est le point entier em>. Quant à se moquer du serveur, pour un test de l'unité qui fait: P> { list_things_request : [first_results, results_after_delete],
delete_thing_request: [delete_thing_response] }
Jetez un coup d'oeil à NOCILLA P>
Pour plus d'informations, check Cette autre réponse à une question similaire p>
Avez-vous consulté le livre récemment publié de Graham Lee's "Développement IOS Test-Diriven"? Les chapitres 8 et 11 traitent de la concurrence et le livre couvre l'aspect de tester la consommation asynchratation des API de service. Je sais que par le moment où votre message, le livre n'était pas encore disponible, c'est pourquoi je le mentionne.
@cardinal merci pour l'indice. Je vais regarder ça!
Pour les tests d'intégration iOS, allez avec KIF tout le chemin.