我正在尝试对使用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]);
}
}
}
最佳答案
现在可以正常工作了。我没有在模拟对象上添加方法。
该代码应如下所示:
id fileManagerMock = OCMClassMock([NSFileManager class]);
OCMStub([fileManagerMock defaultManager]).andReturn(fileManagerMock);
关于ios - OCMock和NSFileManager,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29261758/