Domanda

La mia squadra sta scrivendo un web-hosting di applicazione contenuti gestiti in ASP.Net MVC 2 con la S # arp quadro Architettura. Sto usando SpecFlow e WatiN per test di integrazione, e NUnit per unit testing.

Ho una fabbrica di controllo personalizzato che individua una pagina nel database in base l'URL e il sito, e quindi carica il corretto controller e di azione. Si carica anche un controller di errori quando la pagina (o sito) non si trova nel database.

Voglio scrivere in un test di unità o test di integrazione che convalida una pagina 404 viene visualizzata correttamente quando l'URL non è valido. WatiN non può controllare l'intestazione di risposta, quindi non può garantire precisione un effettivo pagina 404 è stata caricata. Questo può eliminare un test di integrazione come la soluzione.

Sono nuovo di TDD e BDD, così che io possa mancare qualcosa di ovvio. Inoltre, sto retro-fitting test in questo progetto, che lo rende molto più difficile.

Grazie in anticipo.

È stato utile?

Soluzione

Normalmente, quando si scrive scenari BDD, li scrivere dal punto di vista dell'utente.

Se l'utente è una persona comune, che probabilmente non si preoccupano troppo di se l'intestazione è una vera e 404. Si preferisce una pagina dando loro un messaggio chiaro e utile. Scrivere lo scenario per controllare il messaggio chiaro e utile.

Given no section on unicorns exists
When the user browses for horses
And changes the url to be about unicorns
Then the user should be told that no such page exists.

BDD non è realmente sui test. Si tratta di conversazioni che consentono di scoprire altre cose che non avete pensato, e in via di sviluppo una comprensione comune di ciò che dovrebbe accadere. Per esempio, cosa succede quando un utente ordinario tenta di accedere a una pagina di amministrazione? Dovrebbero ottenere "accesso negato" o semplicemente non sa che la pagina è là? Che cosa succede se una pagina viene eliminato? Queste discussioni sono più utili che cercare di pin tutto giù.

Se il 404 è associato a un messaggio particolare per l'utente, allora si può semplicemente unit-test che le partite risposta appropriata. Che ridurrà drasticamente le possibilità di inviare accidentalmente il codice errato con un messaggio in futuro, e si può concentrarsi sul reale beneficio.

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