2008-11-03 7 views
0

Je suis en train d'écrire un test de découverte contre l'API Cocoa alors que j'accélère toutes les choses liées à Mac. J'essaie actuellement de découvrir la meilleure méthode pour encoder une chaîne de caractères. Utilisation de la boîte à outils Google pour Mac J'ai un test unitaire que je intentionnellement origine d'une défaillance:Séquences d'échappement dans STAssertEqualStrings

NSString* expected = @"ab%%20c"; 
NSString* encoded = @"ab c"; 
STAssertEqualStrings(expected, encoded, @"Expected [%s] actual [%s]", [expected UTF8String], [encoded UTF8String]); 

et se plaint « ab P = ab c! » Les ordures qu'elle déverse dans la sortie me lancer. C'est comme si le signe de pourcentage n'était pas correctement échappé mais je sais que c'est le cas. Ma question principale est comment puis-je obtenir un message d'erreur correctement formé afin que je puisse être sûr que j'ai affaire à des pommes plutôt qu'à des oranges?

* mise à jour Stackoverflow supprimait les déchets dans mon message d'origine. L'échec ci-dessus est intentionnel pour illustrer un problème avec le message d'échec. Je suis préoccupé par la poubelle qui apparaît dans le message d'échec car il ne nettoie pas clairement ce qui est dans la chaîne actuelle. L'échec dit quelque chose comme "l'assertion a échoué ab [pomme-symbole] c! = Ab c" où j'obtiens un caractère de pomme dans le message au lieu d'un signe de pourcentage. En pratique, codé serait le retour d'un appel de méthode et je voudrais inspecter, en utilisant le message d'échec d'assertion, le contenu de la chaîne.

+0

Je ne suis pas sûr de comprendre la question. L'attendu ne correspond pas à l'encodé, donc l'assertion échoue. On dirait que ça fonctionne correctement. Ou est-ce que je manque quelque chose? –

+0

Voir les mises à jour ci-dessus pour plus de clarté. – Cliff

+0

Avez-vous trouvé une solution? – JoePasq

Répondre

2

Vous êtes en train de confondre l'échappement à barre oblique inverse, qui est appliqué au moment de la compilation, avec l'échappement de signe de pourcentage, qui est appliqué à la chaîne de format par printf comme les fonctions et les méthodes. Puisque expected n'est pas traité par une telle fonction, les signes de pourcentage n'échappent à rien. Cela dit, à moins que StackOverflow ne réduise votre message, les signes de pourcentage devraient être présents dans "ab %% c! = Ab c".

Questions connexes