2010-06-14 6 views

risposta

15

In realtà utilizzo Moq e Moli nello stesso progetto di test. Entrambi hanno punti di forza e io li uso ciascuno dove appropriato. In genere, utilizzo Moq per il test standard di AAA con verifica e Moles è la "pistola grande" per le cose altrimenti imperdibili, come le chiamate al metodo di estensione ecc.

Mi piace questa disposizione, perché ogni test può essere come semplice e ragionevole possibile, anche se la configurazione di derisione potrebbe variare molto da test a test.

+2

+1 Punto importante che entrambi possono essere utilizzati insieme: devi solo scegliere con attenzione il tuo 'mocker di prima istanza'. –

+1

sarebbe bello vedere un esempio di questo, qualsiasi post del blog sul tuo flusso di lavoro? Trovo un po 'poco naturale per TDD tbh – roundcrisis

+1

Hai ragione che merita un esempio: al momento non ne ho uno, ma mi guarderò intorno e vedrò se un codice che ho potrebbe essere trasformato in uno. – ZeroBugBounce

3

Moli è più spesso confrontato/contrapposto a TypeMock in quanto offre una serie di servizi al di fuori di Moq e/o del punto debole di RhinoMocks.

La domanda principale che devi chiederti nella scelta è se vuoi mantenere i tuoi test relativamente low-tech o essere coinvolto in un livello superiore di inganno tecnico. Questo sarà in gran parte dettato da ciò che stai facendo: hai taggato ASP.NET e non MVC, il che suggerisce che potrebbe essere davvero rilevante per te.

Dai un'occhiata allo this Dimecasts.net video per una bella panoramica.

+0

Sto usando ASP.NET MVC. Ho aggiornato i tag. – user300981

+0

@ bobsmith123: In tal caso, personalmente non vedrei una ragione per usare una struttura di derisione più pesante - mi piacerebbe rimandare l'artiglieria in questione fino al momento del bisogno. L'utilizzo di Pex è una decisione separata che dovrebbe essere resa indipendente dalla scelta del framework di derisione. Perché hai taggato il q con Pex e poi non ti riferisci ad esso? Sei interessato a usarlo/stai chiedendo se siano burro di arachidi e gelatina/credi che sia indivisibile da Moles? –

5

Moles è stato progettato per funzionare in modo efficiente con l'analisi white box di Pex. Tutte le altre strutture finte di solito comportano un sacco di spese generali.

Moles fornisce una proposizione di valore semplice: sostituzione di qualsiasi metodo .NET con un delegato. Di design, Moles non fornisce alcuna API per esprimere la "verifica" come fanno altri framework. Spetta a te decidere se questa decisione è adatta al tuo o no.

Se si ha a che fare con codice (legacy) che dipende da metodi statici codificati o tipi sigillati con costruttori interni, Moles può aiutarti ad affrontare questi casi.

Se si dispone di interfacce e codice ben composto, Moles genera anche stub sottili, ovvero l'implementazione dell'interfaccia, che è possibile utilizzare con il profiler.

+0

+1 Se vuoi vedere quante volte è stato chiamato un metodo in Moles, devi inserire il tuo contatore e chiedere al delegato di chiamare il metodo originale (se lo desideri). Contrasto con 'Times.Once' e altri metodi forniti da alcuni framework (come Moq). – Pat