Test w Spocku mockowanie zwrotki z Optional

Test w Spocku mockowanie zwrotki z Optional
Black007
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 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


"Nie popełnia błędów tylko ten, kto nic nie robi"
baant
  • Rejestracja:ponad 11 lat
  • Ostatnio:3 miesiące
  • Lokalizacja:Wrocław
  • Postów:524
0

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

Black007
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 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?


"Nie popełnia błędów tylko ten, kto nic nie robi"
SH
  • Rejestracja:około 7 lat
  • Ostatnio:około 5 lat
  • Postów:29
0

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

Black007
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 dni
0

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


"Nie popełnia błędów tylko ten, kto nic nie robi"
edytowany 1x, ostatnio: Black007
SH
  • Rejestracja:około 7 lat
  • Ostatnio:około 5 lat
  • 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.