Karate cannot automatically intercept calls.
The recommended approach is when you boot the application running at localhost:8080
you change the configuration so that instead of calling http://dev-stg/userservice/v1/findUser
it calls something like http://localhost:8001/v1/findUser
. This is what most teams do, and is easy because you should anyway be defining external URL-s as application.properties
(or equivalent) as a best-practice.
It is very easy to over-ride an application property in Spring Boot for example, you can do this via the command-line: https://stackoverflow.com/a/37053004/143475
If you want, you can dynamically provision a port for the mock. So your unit test can first start a mock, get the port, and then start the server. You can find details in the Karate documentation.
All this said, if you are able to change the (system) HTTP proxy before the app at localhost:8080
starts, you may be able to do this without modifying the configuration. (But it is tricky, so I recommend the approach explained above.) So in this case, Karate can actually "intercept" the outgoing HTTP calls that the app at localhost:8080
makes.
See the second-last row (5a) in the table here: https://github.com/intuit/karate/tree/master/karate-netty#consumer-provider-example
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…