2009-11-07 1 views
6

Sono a un punto in cui mi piacerebbe iniziare a scrivere test unitari per la mia applicazione MVC. Ho già capito come testare il controller e posso testare le mie librerie aziendali sottostanti senza alcun problema. Vengo scollarsi su un paio di elementi però:Come posso unire le viste di test e gli attributi di autorizzazione della mia applicazione asp.net mvc in nUnit?

  • Come faccio a unità di prova le mie opinioni? Cioè, dopo che un controller ha restituito la vista corretta (che ho testato unitamente, unitamente al test dell'unità per verificare che stia passando i dati corretti). C'è un modo per testare l'unità che la vista sta visualizzando i dati corretti nei campi corretti in nUnit o ho bisogno di uno strumento diverso per questo scopo?

  • Come si esegue il test dell'unità per la sicurezza? Sto usando un provider di appartenenza personalizzato e un provider di ruoli che di per sé credo sia un'unità testabile come qualsiasi altro componente: ho appena aggiornato il provider e controllo che ognuno dei metodi restituisca l'output previsto. Ciò di cui sono curioso è come testare unitamente che ognuno dei miei metodi di controllo sta ricevendo le informazioni sulla sicurezza corrette dai miei fornitori [vale a dire unità che verifica che l'attributo Authorize funzioni correttamente]?

risposta

3

Ecco un post sul blog sull'unità che esegue il test dei componenti di autorizzazione personalizzati. Non si rivolge a RoleProvider e MembershipProviders, ma dovresti essere in grado di utilizzare efficacemente lo stesso metodo per testare qualsiasi numero di filtri.

http://darioquintana.com.ar/blogging/2009/05/23/aspnet-mvc-testing-a-custom-authorize-filters/

responsabilità: Si potrebbe prendere un paio di analizza per capire - è non molto chiaramente scritto e il codice di esempio fornito non esattamente al sodo sia, ma si dovrebbe essere in grado di raccogliere ciò che ne hai bisogno.

0

Per test di integrazione sotto l'interfaccia utente (Controllers e verso il basso) si può usare qualcosa come Fit, FitNesse, Slim, o addirittura StoryTeller.

Per il test dell'interfaccia utente (le tue visualizzazioni) è necessario considerare l'utilizzo di Selenium e Selenium RC.

Mi rendo conto che questo è un sacco di informazioni, ma andrà bene per voi quando si tratta di una soluzione di test più robusta.

+0

Per i controller e verso il basso, tendo a utilizzare nUnit: ho già familiarità con i test delle unità a livello di libreria, quindi non è un problema. Devo ammettere che non ho mai sentito parlare di Slim o StoryTeller quindi li controllerò. Controllerò il Selenium per il test della vista. – BobTheBuilder

+0

Il selenio RC sembra certamente interessante. Non mi è venuto in mente che il test dell'unità sarebbe stato fatto nel browser stesso. La mia percezione originale era che il test dell'unità sarebbe eseguito in nUnit sull'output HTTP. – BobTheBuilder

+0

Desiderate una separazione netta delle preoccupazioni anche nel test dell'unità. Generalmente non permetto ai test dell'unità (Nunit, MsTest, ecc.) Di toccare il database o qualcosa di diverso dall'attuale oggetto sottoposto a test. Fit, FitNesse, Slim e StoryTeller sono ottimi per i test di integrazione, ma non devono essere utilizzati per il test dell'unità. Testare l'interfaccia utente dovrebbe essere molto superficiale e dovrebbe solo verificare che l'interfaccia utente esegua ciò che dovrebbe. Non dovrebbe in nessun caso controllare cose sotto il cofano (cioè database, controller, ecc ...) – Josh

1

È possibile utilizzare Ivonna, uno strumento commerciale o MvcIntegrationTestFramework, uno gratuito. Entrambi supportano la verifica dei tuoi punti di vista durante la procedura, ma Ivonna ti consente di prendere in giro il resto, modificare la configurazione ecc., Quindi è più sul lato di test delle unità.