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