Objective C编写单元测试用例,用于JSON解析

时间:2018-02-21 14:35:01

标签: objective-c unit-testing

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

我正在尝试为JSON响应编写解析测试用例。我添加了我尝试过的所有代码。当我运行测试用例时出现错误"测试失败: - [MyCountryTests testParserMethod]失败:((对象。 title(等于)(jsonDict [@" title"]))失败:("< 00000000 00000000>")不等于("< 78215819 01000000> ")。请有人帮我解决这个问题。任何帮助都会得到帮助。 "

1 个答案:

答案 0 :(得分:1)

您的测试用例在此行失败: XCTAssertEqual(object.title, jsonDict[@"title"]);

这是因为你的MyCountry对象没有设置title

您将对象初始化为:MyCountry *object = [[MyCountry alloc]init];

但是,您应该使用指定的初始化程序,即:- (instancetype)initWithDictionary:(NSDictionary *)mycountryData

这样你的对象就会设置它的标题。

除了使用XCTAssertEqual();来比较你的字符串,你应该使用这样的东西: XCTAssertTrue([object.title isEqualToString:jsonDict[@"title"]],@"Strings are not equal %@ %@", object.title, jsonDict[@"title"]);