Sempre più preso dall’usare Rhino.Mocks per i propri test (a causa di Ughetto; prima facevo le mie classi di mocking), ho iniziato a guardare in giro quale sarebbe il migliore framework per mocking su Sharepoint, perchè Rhino non fa quel che ho più di bisogno: moccare classi sealed e costruttori internal.
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
Moles e Pex:
- 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
Rebitting Tags:
Sharepoint |
TDD |
Mocks |
Moles |
Pex