Manual mocks can be valuable
Friday, June 23rd, 2006Summary: replacing a jMock with a hand-crafted fake led to an absurdly simple, and better, solution
L’altro giorno ho dovuto portare un progetto Java su un nuovo PC, sul
quale non era installata una versione molto recente di Java. Ho
scoperto allora che l’ultima versione di jMock richiede Java 1.5.
Visto che in quel progetto usavo un mock solo, piuttosto che scaricare
e installare un nuovo JDK ho provato a mockare manualmente; cioè ho
definito una
class FakePdfWriter implements PdfWriter { }
e ho lasciato che Eclipse generasse stub per tutti i metodi
dell’interfaccia PdfWriter. Poi ho aggiunto alcuni campi per
registrare quali chiamate erano state fatte, tipo
class FakePdfWriter implements PdfWriter { public List strings = new ArrayList(); public void writeThis(String text, int llx, int lly, int urx, int ury) { strings.add(text); // don't care about coords } }
Devo dire che il risultato alla fine, anche se non era preciso come un
jMock, era più flessibile e facile da usare. Da quando ho questo fake
l’ho usato per supportarmi in una serie di altri test che prima ero
riluttante a scrivere. La soddisfazione è che in confronto a jMock è
assurdamente semplice…
Aggiornamento: c’è un articolo Unit Testing With Hand Crafted Mocks su questo argomento.