Partiamo con un esempio molto semplice per capire come usare un framework di mock per aiutarci nella creazione di test unitari.    
Il framework di mock che utilizzeremo è Rhino Mocks nella versione 3.6, è un buon prodotto che viene portato avanti dall’instancabile Oren Eini (Ayende Rahien).
  Esempio 1 – Creare uno Stub
  
  Il nostro obiettivo è testare il metodo SaveOrder che imposta la proprietà Active a true e richiama il metodo IDataContext.Save.
  public class OrderManager
{
    IDataContext context;
    public OrderManager(IDataContext context)
    {
        this.context = context;
    }
    public void SaveOrder(Order order)
    {
        order.Active = true;
        context.Save<Order>(order);
    }
}
Il problema quando creiamo il metodo di test è che abbiamo bisogno di una classe concreta che implementi l’interfaccia IDataContext. 
  
Cosa succede all’interno del metodo Save non ci interessa e non è l’obiettivo del nostro test. 
  
Una possibile soluzione è creare una classe che implementi solamente l’interfaccia e non esegua nessuna operazione. 
  
Possiamo però ottenere lo stesso risultato anche tramite il nostro framework di mock con una sola istruzione.
[TestMethod()]
public void SaveOrderTest()
{
    IDataContext context = MockRepository.GenerateStub<IDataContext>();
    OrderManager target = new OrderManager(context);
    Order order = new Order(); 
    target.SaveOrder(order);
    Assert.AreEqual(order.Active, true);
}
L’istruzione IDataContext context = MockRepository.GenerateStub<IDataContext>(); che crea uno Stub (Per approfondire) che ci permetterà all’interno del test di richiamare il metodo SaveOrder e di testare il nostro metodo di manager.
Tag di Technorati: 
Test,
Mock,
RhinoMock 
		
			posted @ giovedì 10 giugno 2010 22:17