Sharepoint and Mocking!!!

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:

  1. Implementare interacce/classi che wrappano gli oggetti di Sharepoint
  2. Usare un framework di mocking
  3. 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: | | | |