Comment lire dans un fichier JSON local pour des tests
Je suis en train d'écrire des tests unitaires pour le json de validation (depuis l'application s'appuie fortement sur json à partir d'une API rest).
J'ai un fichier local qui contient simple json: "goodFeaturedJson.txt"
Le contenu:
{
"test": "TEST"
}
Le cas de test:
- (void)testJsonIsValid
{
Featured *featured = [Featured new];
NSString* filepath = [[NSBundle mainBundle]pathForResource:@"goodFeaturedJson" ofType:@"text"];
NSData *data = [NSData dataWithContentsOfFile:filepath];
NSString *jsonString = [[NSString alloc] initWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:nil];//[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"The json string is: %@", jsonString);
id JSON = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
STAssertTrue([featured jsonIsValid:JSON], @"Featured Data is NOT valid...");
}
Le test échoue à chaque fois. La console imprime:
The json string is: (null)
Pourquoi? Je sais pourquoi le test est un échec, car il est clair que si la données est nul/nulle il n'y aura pas de json valide, et le validateur va casser (ce qui devrait, si son non valide).
Il doit y avoir quelque chose de simple que j'ai raté ici, des idées?
source d'informationauteur Jordan Johns
Vous devez vous connecter pour publier un commentaire.
Dans une unité de test, vous voudrez probablement utiliser
[NSBundle bundleForClass:[self class]]
et pas[NSBundle mainBundle]
. C'est parce que l'unité de test n'est pas une application autonome. AvecmainBundle
vous obtenez quelque chose comme/Applications/Xcode.app/Contents/Developer/Tools
mais à l'aide debundleForClass
vous obtient le bundle où votre unité de la classe de test est situé.Dans Swift
Swift 3 et au-dessus de
Swift 2.2
*Ce qui intègre Tom Harrington réponse qui est en Objective-C