Có cách nào, sử dụng Mockito, để chế nhạo một số phương thức trong một lớp, nhưng không phải là các phương thức khác không?
Ví dụ, trong lớp này (được thừa nhận) Stock
tôi muốn mô phỏng các giá trị getPrice()
và getQuantity()
trả về (như được hiển thị trong đoạn kiểm tra bên dưới) nhưng tôi muốn getValue()
thực hiện phép nhân như được mã hóa trong Stock
lớp
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);
}