Posts
83
Comments
165
Trackbacks
11
Moq<IMessageBroker>: come fare?

In giro per la rete, sempre con maggiore frequenza, si trovano blog e/o articoli che introducono, approfondiscono, sviscera il pattern M-V-VM evidenziando la necessità di disaccoppiare fortemente le componenti della nostra applicazione per renderla il più modulare possibile.
Una delle compontenti maggiormente chiamate in gioco, insieme ai “famosi” DelegateCommand è il cosiddetto MessageBroker, o come viene chiamato in Prism EventAggregator: un gestore centralizzato di eventi che rende completamente “ignoranti” publisher e subscribers.
La rete pullula di diverse implementazioni e non è intenzione di questo post fornirne una, tutta nuova e fiammante.

Il comportamento del MessageBroker è molto semplice, così come la versione della sua interfaccia minimalista che per ora sto utilizzando nello sviluppo delle mie applicazioni WPF:

image

Semplice e funzionale…quindi ottimo!

Ma come potremmo fare nel caso in cui volessimo mockare il broker dei messaggi per utilizzarlo nei nostri unit-test? Come possiamo fare a simulare il Post di un messaggio da un pubblisher di cui non conosciamo nemmeno l’esistenza?
La soluzione che ho trovato (con Moq) è abbastanza semplice anche se non del tutto intuitiva, ma mi permette di mockare effettivamente il MessageBroker senza doverne utilizzare un’implementazione concreta.
Ecco il codice, che come al solito rende l’idea più di mille parole:

image

Che ne pensate? Soluzioni alternative?

Alla prossima
- melkio -

posted on giovedì 20 agosto 2009 18:36 Print