Cześć
Mam problem z testami, w których trzeba użyć Mockito.
Pokrótce mam zmockować GetRateFromUrlInterface, następnie zrobić atrapę tego interfejsu i ustawić stałe zachowanie w postaci określonego ratu i przetestować zwrot, np. jaką kwotę w gotówce zwrócę, jeśli chcę wymienić 100 zł na euro, przyjmijmy, że kurs 1 euro to 4zl. Na koniec test na wyjątek, czy wyjątek został poprawnie zwrócony.
Mam problem z ustawieniem stałego zachowania w postaci określonego ratu dla atrapy interfejsu i z testem na wyjątek.
Panowie prosiłbym o wskazówki.
Póki co zmockowałem GetRateFromUrlInterface, poniżej podsyłam kod
import java.io.IOException;
import java.math.BigDecimal;
public class CurrencyService implements CurrencyInterface {
private GetRateFromUrlInterface getRateService;
public CurrencyService(GetRateFromUrlInterface getRateService) {
this.getRateService = getRateService;
}
@Override
public BigDecimal exchange(String currencyFrom, String currencyTo, double amount) throws InvalidInputDataException, IOException {
if (currencyFrom.equals("") || currencyTo.equals(""))
throw new InvalidInputDataException("Przekazano błedne dane");
BigDecimal rate = getRateService.getExchangeRateFromUrl(currencyFrom, currencyTo);
return rate.multiply(BigDecimal.valueOf(amount));
}
}
public interface GetRateFromUrlInterface {
BigDecimal getExchangeRateFromUrl(String fromCurrencyMark, String toCurrencyMark) throws IOException;
--------------------------------------------------
public class CurrencyServiceTest {
@Mock
private GetRateFromUrlInterface getRateFromUrlInterfaceMock;
@Before
public void init() {
MockitoAnnotations.openMocks(this);
}
@Test
public void exchangeReturnTest() throws IOException, InvalidInputDataException {
Mockito.when(getRateFromUrlInterfaceMock.getExchangeRateFromUrl("USD", "PLN"));
CurrencyService currencyService = new CurrencyService(getRateFromUrlInterfaceMock);
currencyService.exchange("USD", "PLN", 100);
Mockito.verify(getRateFromUrlInterfaceMock).getExchangeRateFromUrl("USD", "PLN");