Mockito'yu bir sınıfta bazı yöntemlerle alay etmenin, başkalarının yapmamasının bir yolu var mı?
Örneğin, bu (kuşkusuz çelişkili) Stock
sınıfta alay etmek getPrice()
ve getQuantity()
değerleri döndürmek istiyorum (aşağıdaki test snippet'inde gösterildiği gibi) ama getValue()
çarpımı Stock
sınıfta kodlanmış olarak gerçekleştirmek istiyorum
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);
}