copyItemAtPath返回NO,但在单元测试期间错误为nil

时间:2014-12-25 15:09:25

标签: ios xcode unit-testing

我有以下代码,它将应用程序包中的文件夹复制到Documents文件夹。

- (void)moveTessdataToDocumentsDirectoryIfNecessary
{
// Useful paths
NSFileManager *fileManager = [NSFileManager defaultManager];

// Create specified folder in the Documents directory first
if ([fileManager fileExistsAtPath:self.dataPath] == NO) {
    [fileManager createDirectoryAtPath:self.dataPath withIntermediateDirectories:YES attributes:nil error:nil];
}

NSString *tessdataFolderName = @"tessdata";
NSString *tessdataPath = [[NSBundle bundleForClass:self.class].resourcePath stringByAppendingPathComponent:tessdataFolderName];
NSString *destinationPath = [self.dataPath stringByAppendingPathComponent:tessdataFolderName];
if([fileManager fileExistsAtPath:destinationPath] == NO && [fileManager fileExistsAtPath:tessdataPath]) {
    NSError *error = nil;
    NSLog(@"found %@", tessdataPath);
    NSLog(@"coping in %@", destinationPath);
    BOOL res = [fileManager copyItemAtPath:tessdataPath toPath:destinationPath error:&error];
    if (!res) {
        NSLog(@"The result of copyItemAtPath == NO");
    }
    if(error != nil) {
        NSLog(@"ERROR! %@", error.description);
    }
}
}

它在sumilator和设备中工作正常。

当我开始对此功能进行单元测试时,会出现问题。 单元测试时的输出是:

found /Users/kmakankov/Library/Developer/CoreSimulator/Devices/D28F7234-8C28-4325-BE7D-4DF113DF427E/data/Containers/Bundle/Application/EBD5C654-897B-4066-885B-986553D3459F/TestsProject.app/tessdata
coping in /Users/kmakankov/Library/Developer/CoreSimulator/Devices/D28F7234-8C28-4325-BE7D-4DF113DF427E/data/Containers/Data/Application/50D673A6-3F3E-42A1-98A1-DEAF9A4B2FBE/Documents/tes/tessdata
The result of copyItemAtPath == NO

因为你可以看到copyItemAtPath返回NO,但没有错误信息,所以我无法理解问题的原因是什么。 此外,如果我使用copyItemAtPath更改moveItemAtPath,则单元测试期间函数会正确地将文件夹从源移动到目标,因此源路径和目标路径都是正确的。

有人知道copyItemAtPath有什么问题吗?

一些额外的信息。我使用iOS SDK 8.1。

0 个答案:

没有答案