Test w Spocku mockowanie zwrotki z Optional

Test w Spocku mockowanie zwrotki z Optional
Black007
  • Rejestracja: dni
  • Ostatnio: dni
0

Hej, od jakiegoś czasu stosuję TDD.
Do tej pory używałem JUnit 4.
Postanowiłem przesiąśc się na Spocka i mam taki oto problem:

Kopiuj
def "Jakiś tam test "() {
        given:
        ServicePlanModel model = Mock()
        model.isNoHandset() >> true
        servicePlanService.getServicePlanForCode(_) >> Optional.of(model)
        AddToCartData data = new AddToCartData()
        data.setOffer(OFFER_ID)
        data.setDevice(DEVICE_ID_ZZ)
        data.setGadgets(createGadgets())
        offers.add(data)


        when:
        testee.checkBeforeAddToCart(true, offers)

        then:
        def ex = thrown(AddProductToCartException)
        ex.message.contains('Cannot Add Gadget To no handset offer')

    }

Konkretnie chodzi mi o to, że w debugu widzę, że:

Kopiuj
        ServicePlanModel model = Mock()
        model.isNoHandset() >> true
        servicePlanService.getServicePlanForCode(_) >> Optional.of(model)

Mock zwraca mi isNoHandset = false, mimo że ustawiam na true.
O co chodzi?
Wygląda, jakby tylko z Optionalami miał problem, bo w kilku innych testach gdzie zwracana jest wartość działa.

Pozdrawiam

baant
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 524
0

Pokaz jeszcze setupa/befora coś tam narzeźbił

Black007
  • Rejestracja: dni
  • Ostatnio: dni
0

Hej Nie mam kodu pod ręka, ale w setup() ustawiam false dla tego wywołania.
Tylko że setup się odpala przed testem a potem test, więc czy nie powinno brać wartości z testu a nie setupu?

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

To dlatego, że masz te mockowanie odpowiedzi w given, przesuń je do then

Black007
  • Rejestracja: dni
  • Ostatnio: dni
0

Dziękuję. Zadziałało.
Ale dlaczego?
W innych testach mam mockowanie w given

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

Tak po prostu jest według dokumentacji :p link

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.