测试用例中的NSData比较

时间:2015-11-19 08:22:52

标签: ios objective-c nsdata

概述:

有一个函数f1返回NSData

有没有办法可以编写测试用例来测试返回NSData的函数?

如何创建变量expectedOutput(参见下面的代码)?

示例:

@interface Car : NSObject

- (NSData*) f1;

@end

@implementation Car

- (NSData*) f1 {

    NSData *someData = [[NSData alloc] init]; //This is just an example, the real code has some logic to build the NSData

    return someData;
}

@end

测试用例:

- (void) test {
    Car *c1;

    NSData *actualOutput = [c1 f1];
    NSData *expectedOutput = ??? //How can I build this NSData ?

    XCTAssertEqualObjects(actualOutput, expectedOutput);
}

2 个答案:

答案 0 :(得分:0)

构建expectOutput的方法取决于NSData的内容。它应该基于f1的含义 如果您不知道该类型的数据应该生成f1,您可以检查返回的NSData的长度和类(如果您知道以字节为单位的长度)。
如果你知道,f1将一些字符串编码为数据,你可以生成一个目标字符串,并将生成的字符串与从返回数据创建的字符串进行比较。
如果你知道,应该生成这个函数的字节序列(例如你在其他语言上有相同的函数,或者有一个标准具字节),你可以从光盘加载字节到NSData并将它与actualOutput进行比较。

答案 1 :(得分:0)

<强>步骤

  1. error: wrong number of type arguments: expected 1, found 0 expectedOutput)写入档案(一次)
  2. 在测试用例中,阅读文件并填充NSData
  3. expectedOutputexpectedOutput
  4. 进行比较

    第1步:

    actualOutput

    第2步:

        - (void) writeExpectedDataToFile {}
    
            //Write expected data to file (to be done only once)
            NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *docsDir = [dirPaths objectAtIndex:0];
            NSString *databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:@"expected.txt"]];
    
            [data writeToFile:databasePath atomically:YES];
        }