Domanda

Quale sarebbe il modo corretto di unità di test di un azione di controllo che esegue un reindirizzamento?

UPDATE: Sono uno sviluppatore di base sul progetto CFWheels. Tutta la ragione che sto chiedendo questa domanda è attualmente sto lavorando a migliorare il costruito nel framework di test che abbiamo e mi chiedo su come affrontare e implementare qualcosa di simile in CFWheels per rendere più facile per gli sviluppatori di testare la loro applicazione .

UPDATE: ho capito come testare questo. sembra che dovremo riscrivere le parti interne del controller ruote un po 'di eseguire il redirect dopo l'azione completa e dopo viene passato al dispatcher. l'unica cosa con questo approccio è che qualsiasi codice dopo la RedirectTo () sarebbe corse a meno che non si prendono le opportune precauzioni prima di mano; questo include sia mettere un ritorno dopo l'istruzione RedirectTo () o di mettere i controlli condizionali nella vostra azione di isolare il codice RedirectTo () da altro codice. Include inoltre fare in modo che nient'altro è reso una volta che un RedirectTo () viene eseguita.

È stato utile?

Soluzione

Roba come questo diventa molto più semplice per verificare se si rompe a parte il meccanismo di reindirizzamento in più funzioni: a) una funzione che determina l'URL di destinazione e b) una funzione che esegue il reindirizzamento

.

In questo modo, è possibile verificare functiona molto facilmente, e functiona è quello che si desidera mettere alla prova in ogni modo. E 'il codice ha scritto. È il luogo dove la tua vera logica è. FunctionB non è il codice; è budella ColdFusion, e non c'è molto senso in fase di test CFLocation.

Se siete in una missione per raggiungere una copertura di test 100%, allora si potrebbe spendere 10 test per functiona dove esercitare tutti i diversi rami della logica, e poi uno prova per functionB che esercita il reindirizzamento nel modo che Terry suggerisce; Quindi, in questo modo, si ottiene solo 1 prova lenta invece di 10.

È possibile generalizzare questo approccio per impieghi in altri scenari: file system, webservices, HTTP, FTP, e-mail, ecc: "Estrarre la roba è possibile controllare e vuole testare dalla roba non si può controllare e non fare vogliono mettere alla prova "

Altri suggerimenti

Si potrebbe chiamare il controllore con l'URL appropriato utilizzando cfhttp con reindirizzamento impostato su false. Quindi verificare il conseguente risultato cfhttp struct, dovrebbe avere informazioni su dove il reindirizzamento ti prende.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top