Domanda

Sono nuovo a specflow e un avere un dubbio su come prendere in giro il mio dipendenze controllore. Per esempio ho una classe UserController che dipende dalla mia classe UserRepository che un passaggio alla classe controllore su un costruttore. Quindi, utilizzando Moq sto facendo qualcosa di simile:

var mock = new Mock<UserRepository>();
mock.Setup(m => m.ListAll()).Returns(new List<User>());
var browser = new IE(string.Format("http://localhost:4265/{0}",
username));

Ma il mio controller non utilizza l'oggetto deriso, come devo fare che?

Grazie

È stato utile?

Soluzione

si stia mescolando tre (almeno) framework di test, che naturalmente è cool, ma probabilmente si dovrebbe fermarsi e considerare che cosa è che si desidera testare.

Watin è buono per testare l'interfaccia utente in quanto controlla un'istanza del browser. Trovo bravo a fare i test di regressione http://en.wikipedia.org/wiki/Regression_testing

Specflow è grande pure - personalmente mi piace usarlo per colmare il divario tra gli sviluppatori di business e (US) gli sviluppatori di software come si può effettivamente definire i requisiti in termini entrambi capire (e probabilmente altre parti dell'organizzazione pure) non voglio iniziare una guerra fiamma, ma può introdurre più problemi di quanti ne risolva, a meno che non ci si concentra sui suoi valori reali. Usiamo questo al lavoro testando il livello di servizio (uno strato di sotto dei controller nello strato di presentazione) e abbiamo effettivamente prendiamo in giro solo il database, servizi esterni e file system, ecc -. Che rende il nostro specflow mette alla prova una sorta di test di integrazione

Moq è un quadro di scherno e può naturalmente essere utilizzato in qualsiasi tipo di test (come ho appena lasciate scivolare lo facciamo), ma questo è un grande strumento così per unit testing.

Quindi, per tornare alla tua domanda. Se si vuole fare un test di trovare tutti i bug, sei nei guai;) So che non vuoi che - che era solo un suggerimento stupido ho fatto - ma in realtà, se si desidera solo fare test di integrazione ( test che va dal basso UI attraverso diversi strati / dipendenze) si potrebbe facilmente mescolare diversi framework di test come siete adesso, ma allora perché prendere in giro il repository utente? È perché non si vuole colpire la banca dati?

ogni modo un modo per fare il test di integrazione ti sembra come si vuole sarebbe quello di configurare la soluzione di utilizzare un modello - o di forse uno stub farebbe (creare un UserRepository falso che i rendimenti dei dati si desidera testare con) - te dovrebbe utilizzare un quadro di dipendenza come Unità , Ninject o mappa della struttura (ragazzo Cerchiamo di non iniziare una guerra su quale quadro per l'uso ) e hanno il test url Watin sta usando lancio tuo sito utilizzando una configurazione con il finto / repository finte.

Si potrebbe d'altra parte fare test di unità nei controller, servizi, ecc Si potrebbe anche voler provare TDD ma questo è tutto un altro capitolo non posso coprire qui!

Altri suggerimenti

Non stanno facendo nulla con il finto per iniettare nel vostro controller. Le vostre esigenze controller per essere dato il repository utente in modo che esso per essere utilizzato.

Inoltre è necessario accettare più risposte.

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