jeudi 6 février 2020

How do I mock local OAuth2RestTemplate restTemplate?

I have a method:

public void putObj(Doc doc) {
        for (int i = 0; i < 3; i++) {
            try {
                OAuth2RestTemplate restTemplate = something.thatReturnsOAuth2RestTemplate(props);
                restTemplate.postForEntity(something.getUrl(), doc.toJSONString(), String.class);
                break;
            } catch (HttpClientErrorException | HttpServerErrorException e) {
                //do stuff in here
            }
        }
    }

And my test class:

@RunWith(MockitoJUnitRunner.class)
@PrepareForTest(OkHttp3TemplateUtil.class)
public class TestingClass {

@InjectMocks
private static MyService myService;

@Mock
private static Something something;

@Mock
private static Props props;

@Mock
private static OAuth2RestTemplate restTemplate;

@Test
    public void testExceptionCaughtWhenThrownByRestTemplate(){
        PowerMockito.mockStatic(OkHttp3TemplateUtil.class);
        Doc doc = new Doc.docBuilder().setSomething("");

        when(something.thatReturnsOAuth2RestTemplate(props)).thenReturn(restTemplate);
        when(restTemplate.postForEntity("http://dummy.com", String.class, String.class)).thenThrow(HttpClientErrorException.class);
        myService.putObj(doc);
    }
}

No matter what I do, thenThrow never throws an exception. Test passes never providing coverage for code after catch. What am I missing here, I'm going mad!

Aucun commentaire:

Enregistrer un commentaire