Sto esaminando un'applicazione e aggiungendo i test di unità. L'applicazione è scritta usando gli storyboard e supporta iOS 6.1 e versioni successive.Test se viene eseguito performSegueWithIdentifier all'interno di un metodo di visualizzazione controller
Sono stato in grado di testare tutti i soliti metodi di restituzione senza problemi. Tuttavia Attualmente sto perplesso con una certa prova che voglio realizzare:
In sostanza ho un metodo, consente di chiamare doLogin:
- (IBAction)doLogin:(UIButton *)sender {
// Some logic here
if (//certain criteria to meet) {
variable = x; // important variable set here
[self performSegueWithIdentifier:@"memorableWord" sender:sender];
} else {
// handler error here
}
Quindi voglio provare che o la segue è chiamato e che il variabile è impostata, o che il controller di visualizzazione MemorableWord è caricato e le variabili in là sono corrette. La variabile impostata qui nel metodo doLogin viene passata al controller della vista di destinazione di memorableWord segues nel metodo prepareForSegue.
Ho OCMock configurato e funzionante, e sto anche utilizzando XCTest come framework di test delle mie unità. Qualcuno è stato in grado di produrre un test unitario per coprire una situazione del genere?
Sembra che Google e SO siano piuttosto spogli per quanto riguarda le informazioni in quest'area. Un sacco di esempi su semplici test di base che sono piuttosto irrilevanti per la realtà più complessa dei test di iOS.
Grazie, ma questo è esattamente quello che sto cercando di fare. Sto provando a testare il metodo doLogin da solo e senza dipendenza da altro. per esempio, come uno dei miei test, voglio assicurarmi che il metodo chiamerà effettivamente performSegueWithIdentifier quando i criteri sono soddisfatti. Verificherò anche che l'errore venga gestito correttamente quando non lo è. Il mio problema è scoprire o meno il performSegueWithIdentifier chiamato o no. Qualche idea su questo? – Rob
+1 per la spiegazione decente della differenza tra IT e UT, sono sicuro che gli utenti che hanno meno familiarità con il concetto di questo troveranno utile! :) – Rob
OCMock ha metodi come verificare o rifiutare esattamente per questo tipo di scopo. Con la verifica è possibile assicurarsi che sia stato chiamato un metodo e tramite rifiuto si è certi che un metodo NON sia stato chiamato. Tieni presente che nel tuo caso potresti aver bisogno di usare un simulato parziale e che l'uso di molti banali parziali potrebbe essere segno di una cattiva progettazione delle applicazioni – Alexander