karthi
karthi

Reputation: 201

Objective C writing unit test case for JSON parsing

Code:

-(void) testParserMethod {

    NSDictionary *jsonDict= @{ @"title" : @"",
                              @"description" : @"",
                              @"imageHref" : @"",
                              };
    MyCountry *object = [[MyCountry alloc]init];

    XCTAssertEqual(object.title, jsonDict[@"title"]);
    XCTAssertEqual(object.description, jsonDict[@"description"]);
    XCTAssertEqual(object.ImageHref, jsonDict[@"imageHref"]);
}

@interface MyCountry : NSObject

@property (nonatomic, readonly) NSString *title;
@property (nonatomic, readonly) NSString *description;
@property (nonatomic, readonly) NSString *ImageHref;

- (instancetype)initWithDictionary:(NSDictionary *)mycountryData;
@end




#import "MyCountry.h"

@implementation MyCountry
@synthesize title, description, ImageHref;
- (instancetype)initWithDictionary:(NSDictionary *)mycountryData
{
    self = [super init];
    if (self)
    {
        title = mycountryData[@"title"];
        description = mycountryData[@"description"];
        ImageHref = mycountryData[@"imageHref"];
    }
    return self;
}

@end

I am trying to write parse test case for JSON response.I added all code what i tried.When i run the test case getting error as "test failure: -[MyCountryTests testParserMethod] failed: ((object.title) equal to (jsonDict[@"title"])) failed: ("<00000000 00000000>") is not equal to ("<78215819 01000000>").Please somebody help me to fix this issue.any help will be appreicated. ".

Upvotes: 0

Views: 180

Answers (1)

theCoderGuy
theCoderGuy

Reputation: 394

Your test case is failing at this line: XCTAssertEqual(object.title, jsonDict[@"title"]);

It's because your MyCountry object doesn't have its title set.

You initialize your object as : MyCountry *object = [[MyCountry alloc]init];

However, you should use your designated initializer which is:
- (instancetype)initWithDictionary:(NSDictionary *)mycountryData

That way your object will have its title set.

Also instead of using XCTAssertEqual(); to compare your Strings, you should use something like this: XCTAssertTrue([object.title isEqualToString:jsonDict[@"title"]],@"Strings are not equal %@ %@", object.title, jsonDict[@"title"]);

Upvotes: 1

Related Questions