Objective c 如何对NSArrayController(子类)进行单元测试?

Objective c 如何对NSArrayController(子类)进行单元测试?,objective-c,cocoa,core-data,nsarraycontroller,xctest,Objective C,Cocoa,Core Data,Nsarraycontroller,Xctest,我想为我的NSArrayController子类编写一些单元测试。 我首先设置核心数据管理对象上下文,然后将实体“资产”的一些对象添加到核心数据,然后设置我的阵列控制器: @interface MYAssetArrayControllerTest : XCTestCase ... - (void)setUp { [super setUp]; [self setUpManagedObjectContext]; [self setUpAssets]; [self s

我想为我的NSArrayController子类编写一些单元测试。
我首先设置核心数据管理对象上下文,然后将实体“资产”的一些对象添加到核心数据,然后设置我的阵列控制器:

@interface MYAssetArrayControllerTest : XCTestCase
...

- (void)setUp
{
    [super setUp];
    [self setUpManagedObjectContext];
    [self setUpAssets];
    [self setUpMYAssetArrayController];
}

- (void)setUpMYAssetArrayController
{
    _arrayController = [[MYAssetArrayController alloc] init];
    [_arrayController setManagedObjectContext:_moc];
    [_arrayController setEntityName:@"Asset"];
    [_arrayController setSelectsInsertedObjects:YES];
    [_arrayController setAutomaticallyPreparesContent:YES];
    [_arrayController fetch: self];
}
当我尝试查看排列的对象时,没有:

- (void)testGetArrangedObjects
{
    id myArrangedObjects;
    myArrangedObjects = [_arrayController arrangedObjects];
    ...
}
myArrangedObjects始终为空…

我必须如何设置我的NSArrayController才能从中检索对象?

当我不将
fetch:
fetchWithRequest:merge:error:
发送到我的阵列控制器时,我发现它可以工作。我的原始代码:

- (void)setUpMYAssetArrayController
{
    _arrayController = [[MYAssetArrayController alloc] init];
    [_arrayController setManagedObjectContext:_moc];
    [_arrayController setEntityName:@"Asset"];
    [_arrayController setSelectsInsertedObjects:YES];
    [_arrayController setAutomaticallyPreparesContent:YES];
    [_arrayController fetch: self];
}
变成:

- (void)setUpMYAssetArrayController
{
    _arrayController = [[MYAssetArrayController alloc] init];
    [_arrayController setManagedObjectContext:_moc];
    [_arrayController setEntityName:@"Asset"];
    [_arrayController setSelectsInsertedObjects:YES];
    [_arrayController setAutomaticallyPreparesContent:YES];
    NSError *error = nil;
    BOOL ok = [_arrayController fetchWithRequest:nil merge:NO error:&error];
}
下面对
-fetch
的注释可能是一种解释

从OSXV10.4开始,此方法的结果将推迟到 运行循环的下一次迭代,以便错误显示 该机制可以作为表单提供反馈