Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mocking REST API calls with SpringBoot profiles

I have recently started out with Spring and am unsure about how to approach this issue. I have a Spring boot program which makes calls to remote REST APIs. For example an AddressService class with getAddress(String user) method, which makes a HTTP call and returns a JSON response. I would like to set up Spring profiles for development purposes local, dev, uat, prod.

When the program is running with the local profile, I would like to "mock" these external API calls with an expected JSON response, so I can just test logic, but when it is run in any of the other profiles I would like to make the actual calls. How can I go about doing this? From what I read, there's many ways people approach this, using WireMock, RestTemplate, Mockito etc. I'm confused about which is the way to go.

Any advice would be greatly appreciated. Thanks.

like image 879
Boa Avatar asked Feb 25 '26 16:02

Boa


1 Answers

WireMock,Mockit is for unittest, to mock the real request. Example here: How do I mock a REST template exchange?

When you need a running implementation with a mock, i think the easiest way is that you have a interface

public interface AdressAdapter {
    public List<Adress> getAddress(String name);
}

And two different implementations depending on the profile.

@Profile("local")
public class DummyAdress implements AdressAdapter{
    @Override
    public List<Adress> getAddress(String name) {
        //Mock here something
        return null;
    }
}

! means NOT locale profile in this case.

@Profile("!local")
public class RealAdress implements AdressAdapter{
    @Override
    public List<Adress> getAddress(String name) {
        //Make Restcall
        return null;
    }
}
like image 95
pL4Gu33 Avatar answered Feb 27 '26 04:02

pL4Gu33



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!