2015-08-20 9 views
7

Sto utilizzando il paradigma MVVM nella mia attuale app iOS. Recentemente, ho anche iniziato a utilizzare ReactiveCocoa con il progetto. Sono passato anche alla sperimentazione con Unit testing.Test RACSignals con XCTest

Il problema che sto affrontando è come testare correttamente l'ID personalizzato RACSignal che ho creato. Ecco un esempio di un segnale di prova che sto testando. Questo segnale viene utilizzato con un UItextField e interromperà l'inserimento di caratteri indesiderati nel campo di testo. In questo caso, sto consentendo solo numeri:

//Declared like so: 
-(RACSignal *)onlyAllowNumbersforTextFieldSignal:(RACSignal *)signal 

//used like this: 
RAC(testTextField, text) = [self.viewModel onlyAllowNumbersforTextFieldSignal:testTextField.rac_textSignal]; 

Ora il segnale funziona perfettamente nel viewModel e nel viewController - io ora voglio solo creare un test case per questi tipi di segnali.

risposta

1

È possibile utilizzare il metodo +[RACSignal return:] per fornire un segnale di input (anziché quello del campo di testo). Quindi utilizzare il metodo -first per ottenere il valore del segnale di uscita dal modello di visualizzazione:

- (void)testExample { 
    RACSignal *textSignal = [RACSignal return:@"a123"]; 
    //assuming that you initialized self.viewModel in setUp method of your test case 
    NSString *result = [[self.viewModel onlyAllowNumbersforTextFieldSignal:textSignal] first]; 
    XCTAssertEqualObjects(result, @"123"); 
} 
+0

Grazie mille per questo. Lo darò non appena avrò un po 'di tempo per portare avanti i casi di test. Se solo potessi darti la taglia.! Aggiornerà anche una volta che l'ho testato completamente. – Tander

Problemi correlati