2015-08-20 6 views
7

Ich verwende das MVVM Paradigma in meiner aktuellen iOS App. Vor kurzem habe ich auch begonnen, ReactiveCocoa mit dem Projekt zu verwenden. Ich habe jetzt auch mit Unit testing experimentiert.Testen von RACSignalen mit XCTest

Das Problem, mit dem ich konfrontiert bin, ist, wie ich die benutzerdefinierte RACSignal s, die ich erstellt habe, richtig zu testen. Hier ist ein Beispiel für ein Testsignal, das ich gerade teste. Dieses Signal wird mit UItextField verwendet und verhindert, dass unerwünschte Zeichen in das Textfeld eingegeben werden. In diesem Fall bin ich damit nur Zahlen:

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

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

nun das Signal funktioniert perfekt in den viewModel und in den viewController - ich jetzt will nur ein test case für diese Art von Signalen erstellen.

Antwort

1

Sie können die Methode +[RACSignal return:] verwenden, um ein Eingangssignal (anstelle des Textfelds) bereitzustellen. Verwenden Sie dann -first Methode den Wert des Ausgangssignals von dem View-Modell zu erhalten:

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

Ihnen dafür so vielen Dank. Ich werde es hergeben, sobald ich etwas Zeit habe, mit Testfällen weiterzumachen. Wenn ich dir nur das Kopfgeld hätte geben können! Wird auch aktualisiert, sobald ich dies vollständig getestet habe. – Tander