Test w Spocku mockowanie zwrotki z Optional

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:

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:

        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

0

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

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?

0

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

0

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

0

Tak po prostu jest według dokumentacji :p link

1 użytkowników online, w tym zalogowanych: 0, gości: 1