Usare un framework di mock nei test - Stub

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

Mock1

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: ,,

posted @ giovedì 10 giugno 2010 22:17

Print
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011