9
ビューモデルで実行中のRACCommandの結果をテストしようとしています。ビューモデルでRACCommandをテストする
私はそうのようなコマンドを送信する設定:
- (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;
}
createSubmitCommandは私が私の見解モデルを初期化するときに呼び出さとvalidSignalは、テストコンテキストで有効です。
私は、Core Data Persistenceには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];
問題は保存が非同期であることですし、テスト終了をブロックしていないし、私のNSManagedObjectContextを切断し、テストが失敗した:
私のテストでは、次のようになります。 私は何をしようとしているのか、まったく間違っていると感じていますが、私はRACCommandを誤解していますが、わかりません。