¿Hay alguna forma, usando Mockito, para burlarse de algunos métodos en una clase, pero no de otros?
Por ejemplo, en esta Stock
clase (ciertamente inventada) quiero burlarme de los valores getPrice()
y getQuantity()
devolverlos (como se muestra en el fragmento de prueba a continuación), pero quiero getValue()
que realice la multiplicación codificada en la Stock
clase
public class Stock {
private final double price;
private final int quantity;
Stock(double price, int quantity) {
this.price = price;
this.quantity = quantity;
}
public double getPrice() {
return price;
}
public int getQuantity() {
return quantity;
}
public double getValue() {
return getPrice() * getQuantity();
}
@Test
public void getValueTest() {
Stock stock = mock(Stock.class);
when(stock.getPrice()).thenReturn(100.00);
when(stock.getQuantity()).thenReturn(200);
double value = stock.getValue();
// Unfortunately the following assert fails, because the mock Stock getValue() method does not perform the Stock.getValue() calculation code.
assertEquals("Stock value not correct", 100.00*200, value, .00001);
}