Chi ha provato a mockare dei progetti web sa bene che “problemi” si possono avere con i vari HttpContext etc.
Nel mondo Sharepoint abbiamo gli stessi problemi con, l’SPContext, SpList … in più abbiamo poche interfacce e molti metodi/proprietà static.
Ecco allora che abbiamo poche soluzioni applicabili:
- Implementare interacce/classi che wrappano gli oggetti di Sharepoint
- Usare un framework di mocking
- Usare Doubler
Il punto 1 è quello che facevo e avrei continuato a fare senza l’ausilio dei framework di mocking.
Prendete una classe la mocchiamo a manina e vediamo se il codice che scriveremmo a contorno funziona:
-
PRO
Non devo impare a usare un framework -
CON
Devo scrivere tanto codice!!!
Il punto 2 è quello più interessante, anche perchè abbiamo un pò di framework di testing da poter usare.
Il primo che mi viene in mente è Rhino.Mocks, ma come ho scritto su non è utile con Sharepoint perchè dovremmo scrivere tutte le interfacce necessarie per wrapparne gli oggetti.
Altre due mi vengono in mente: TypeMock e Moles + Pex.
Anche quì abbiamo pro è contro…
TypeMock:
-
PRO
Mocca l’impossibile, anche le mozzarelle di bufala e adesso c’è anche la licenza TypeMock Isolator 2010 for Sharepoint developers che comunque costa un botto e, rispetto alle altre versioni, non ha nulla: http://site.typemock.com/comparison-matrix/
Rimane il fatto che, ad oggi, è la più completa… ad oggi -
CON
Costa e non poco
-
PRO
Mocca gli oggetti sealed e i costruttori internal
Pex genera test cases dopo aver analizato il codice in test (mooolto comodo) -
CON
Microsoft ancora non ne garantisce il supporto
Doubler è un addin di reflector sviluppato da Jay Flowers, ottimo per creare stub: http://code.google.com/p/doubler/
Personalmente ho sempre visto di buon occhio TypeMock e ultimamente l’ho provato.
Ma visto il costo non ho voluto aprofondirne la mia conoscenza.
Invece sempre più proverò ed usero Moles + Pex per i miei progetti, rimanendo a Rhino per Dexter.
Cips
0xb4627233, 0x5e70, 0x4219, 0x95, 0x9e, 0x1, 0x63, 0x5e, 0x6b, 0x3f, 0xae
Imported comment, original author: Andrea Saltarello
ReplyDeleteTypeMock l'ho visto nascere e nel 2003/2004 lo usavo perché la versione "personal" era gratuita: oggi sarebbe difficile convincere un cliente a spendere quella cifra per *ogni* dev. Negli ultimi (quasi) 2 anni, la mia "combo" è MSTest+Moq, Pex è interessantissimo (ma non ho ancora avuto modo di provarlo seriamente su un progetto vero) e incrocio le dita per Moles :-)