Mvvm 在视图模型上测试rac命令
我正在尝试测试在视图模型上执行的RAC命令的结果 我将提交命令设置为:Mvvm 在视图模型上测试rac命令,mvvm,asynchronous,magicalrecord,reactive-cocoa,Mvvm,Asynchronous,Magicalrecord,Reactive Cocoa,我正在尝试测试在视图模型上执行的RAC命令的结果 我将提交命令设置为: - (void) createSubmitCommand { @weakify(self); self.submitCommand = [RACCommand commandWithCanExecuteSignal: [self validSignal]]; self.submitSignal = [self.submitCommand addSi
- (void) createSubmitCommand
{
@weakify(self);
self.submitCommand = [RACCommand commandWithCanExecuteSignal: [self validSignal]];
self.submitSignal = [self.submitCommand
addSignalBlock:^RACSignal *(id value) {
@strongify(self);
return [self save];
}];
}
- (RACSignal *) save
{
RACSubject *saveSubject = [RACSubject subject];
[self.model.managedObjectContext MR_saveOnlySelfWithCompletion:^(BOOL success, NSError *error) {
if (!success)
{
[saveSubject sendError: error];
}
else
{
[saveSubject sendNext: nil];
[saveSubject sendCompleted];
}
}];
return saveSubject;
}
当我初始化我的视图模型并且validSignal在测试上下文中有效时,将调用createSubmitCommand
我使用MagicalRecord进行核心数据持久化,使用Kiwi进行测试。我需要在调用[[viewModel submitCommand]execute:nil]时测试我的模型是否正在保存
我的测试如下所示:
__block NSArray *models = nil;
[[vm submitSignal] subscribeNext:^(id x) {
models = [Model MR_findAll];
}];
[[vm submitCommand] execute: nil];
[[expectFutureValue(models) should] haveCountOf: 2];
问题是save是异步的,不会阻塞测试,然后测试完成并断开我的NSManagedObjectContext,测试失败。
我觉得我的测试完全错误,因为我正在尝试做什么,或者我误用了RACCommand,但我不知道是哪个…结果是我太愚蠢了。我对这次测试的期望应该是:
[[expectFutureValue(models) shouldEventually] haveCountOf: 2];
猕猴桃似乎一直在等待结果