我正在尝试对一个方法进行单元测试,该方法使用NSFileManager来检查文件是否存在并删除该文件。我不确定我是否正确地设置了模拟对象。
我得到了“方法没有被调用”,尽管我确定它是被调用的。我是不是在设置的方式中遗漏了什么?
我按如下方式设置了模拟对象:
- (void)testdeleteFileWithPath {
id fileManagerMock = OCMClassMock([NSFileManager class]);
OCMStub([NSFileManager defaultManager]).andReturn(fileManagerMock);
NSString *filePath = @"testPDF.pdf";
NSURL *fileURL = [self.documentsDirectory URLByAppendingPathComponent:filePath];
[self.fileDAO deleteFileWithPath:filePath];
OCMVerify([fileManagerMock fileExistsAtPath:[fileURL path]]);
}
- (void)deleteFileWithPath:(NSString *)filePath
{
if (filePath) {
NSURL *fileURL = [self.documentsDirectory URLByAppendingPathComponent:filePath];
NSError *error = nil;
if (![[NSFileManager defaultManager] fileExistsAtPath:[fileURL path]]) {
NSLog(@"File to delete does not exist. \nPath: %@", [fileURL absoluteString]);
} else
{
[[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error];
NSLog(@"Error: %@", [error description]);
}
}
}发布于 2015-04-15 18:50:42
现在开始工作了。我没有截断mock对象上的方法。代码应如下所示:
id fileManagerMock = OCMClassMock([NSFileManager class]);
OCMStub([fileManagerMock defaultManager]).andReturn(fileManagerMock);发布于 2015-04-18 04:19:48
您确实应该部分模拟对象实例类,而不是NSFileManager类:[fileManagerMock defaultManager]
id fileManagerMock = [OCMockObject partialMockForObject[fileManagerMock defaultManager]];这很可能会影响结果
https://stackoverflow.com/questions/29261758
复制相似问题