OCMock和NSFileManager

Car*_*ine 5 ocmock nsfilemanager ios

我正在尝试对使用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]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Car*_*ine 6

现在工作了。我没有在模拟对象上添加方法。该代码应如下所示:

id fileManagerMock = OCMClassMock([NSFileManager class]); 
OCMStub([fileManagerMock defaultManager]).andReturn(fileManagerMock);
Run Code Online (Sandbox Code Playgroud)