概述:
有一个函数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);
}
答案 0 :(得分:0)
构建expectOutput的方法取决于NSData的内容。它应该基于f1的含义
如果您不知道该类型的数据应该生成f1,您可以检查返回的NSData的长度和类(如果您知道以字节为单位的长度)。
如果你知道,f1将一些字符串编码为数据,你可以生成一个目标字符串,并将生成的字符串与从返回数据创建的字符串进行比较。
如果你知道,应该生成这个函数的字节序列(例如你在其他语言上有相同的函数,或者有一个标准具字节),你可以从光盘加载字节到NSData并将它与actualOutput进行比较。
答案 1 :(得分:0)
<强>步骤强>
error: wrong number of type arguments: expected 1, found 0
(expectedOutput
)写入档案(一次)NSData
expectedOutput
与expectedOutput
第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];
}