Jak przetestować dodanie do listy ?

Jak przetestować dodanie do listy ?
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam taką metodę i chciałbym przetestować czy produkt, który zwraca repository dodał się do listy

Kopiuj
 public String showInformationAboutProduct(String barcode) {
        Product product = productRepository.getByBarcode(barcode);
        scannedProducts.add(product);
        return showOnLcd(product);
    }

jak to ugryźć ? Stworzyłem coś takiego ale to nie tak powinno wyglądać.

Kopiuj
   @Test
    public void shouldAddProductToReceipt() {
        //given
        product = givenProduct("4582664XX", "orange", new BigDecimal(10));
        scannedProducts = Lists.newArrayList();
        Mockito.when(productRepository.getByBarcode("4582664XX")).thenReturn(product).then(invocationOnMock -> {
            Product argumentAt = invocationOnMock.getArgumentAt(0, Product.class);
            scannedProducts.add(argumentAt);
            return null;
        });
        //when
        singleProductSale.showInformationAboutProduct("4582664XX");
        //then
        assertThat(scannedProducts).containsOnly(product);
    }
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

No cała ta część .then(invocationOnMock.... jest zbędna, a ten ID bym wyciągnął do osobnej zmiennej a nie kopiował. A poza tym to nie rozumiem wtf robisz z tą listą. Przecież ten twój obiekt tą listę powinien mieć, więc sobie sprawdź co na niej jest.
A jak ta lista nie jest dostępna z testu, to może mockuj to showOnLcd i sprawdź czy dobrą rzecz na nim chciałeś wyświetlić?

  • Rejestracja: dni
  • Ostatnio: dni
0

Dokładnie nie wiem dlaczego kombinuje wystarczy zrobić tak jak mówisz.

Kopiuj
@Test
    public void shouldAddProductToReceipt() {
        //given
        product = givenProduct("4582664XX", "orange", new BigDecimal(10));
        Mockito.when(productRepository.getByBarcode("4582664XX")).thenReturn(product);
        //when
        singleProductSale.showInformationAboutProduct("4582664XX");
        //then
        assertThat(singleProductSale.getScannedProducts().contains(product)).isTrue();
    }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.