2013-06-16 25 views
9

Görünüm modelimde çalıştırılan bir RACCommand sonucunu test etmeye çalışıyorum. RACCommand'ın Görünüm Modeli Üzerinde Test Etme

ben şöyle benim teslim komutu kurmak: Benim görünümü modeli init ve validSignal testi bağlamında geçerli olmadığında

- (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 denir.

Core Data persistance ve test için Kiwi için MagicalRecord kullanıyorum. [[ViewModel submitCommand] execute: nil] dediğimde, modelimin kaydedildiğini test etmem gerekiyor.

__block NSArray *models = nil; 
[[vm submitSignal] subscribeNext:^(id x) { 
    models = [Model MR_findAll]; 
}]; 

[[vm submitCommand] execute: nil]; 

[[expectFutureValue(models) should] haveCountOf: 2]; 

konu kaydet asenkron olması ve daha sonra deney bitirir engellemez ve benim NSManagedObjectContext aşağı gözyaşları ve test başarısız:

Testim şuna benzer. Test yapmaya çalıştığım ya da RACCommand'ı yanlış kullandığım için testin tamamen yanlış olduğunu hissediyorum, fakat bilmiyorum ki ...

cevap

6

Bu, benim aptal olduğumdan çıkıyor. Bu sınama için beklemem şu olmalıdır: Kiwi artık takılıyor ve sonuç için bekleyin.