Comments (7)
I join others thinking it should be possible to test RoundTrippers.
A workaround is to use gock.DefaultTransport
as the underlying transport in your custom transport :
// Instead of intercepting the http client
// gock.InterceptClient(httpClient)
// Send requests to gock's transport manually
myTransport := httpClient.Transport.(*MyTransport)
myTransport.delegateTransport = gock.DefaultTransport
from gock.
gock
does a runtime patching in order to intercept HTTP traffic at http.Transport
> RoundTrip
level, hence that's the reason it doesn't work if you are overwriting the transport RoundTrip
with a custom implementation after mocking the http.Client
.
You can see implementation details here: https://github.com/h2non/gock/blob/master/transport.go#L25-L86
That being said, it's not recommended that your custom logic goes at transport level. That responsability should be done in a higher layer, not during the request round trip phase.
If you need to write non-trivial HTTP clients that share intermediate logic, I would suggest you taking a look to gentleman
toolkit, which allows you to define plugabble middleware logic easily: https://github.com/h2non/gentleman
from gock.
+1 to this. We use a custom transport to apply auth. It is entirely recommended to set your transport-layer auth using a custom transport.
At the very least, it should detect custom transports and warn the user, and it should be documented as a limitation in the readme.
Or, yanno, it could just wrap the custom transport.
from gock.
If you want to use TLS client certificates, then you HAVE to use a custom transport
from gock.
It seems also that the way to add keepalive at client side is by swaping to a custom transport.
from gock.
+1
from gock.
Facing the same issue with testing the custom roundtripper
from gock.
Related Issues (20)
- gock issue while mocking Prometheus with URL escaped query parameters HOT 3
- Mocking InsecureSkipVerify requests HOT 1
- TestResponderPreExpiredContext fails with go1.16 and up
- test code with EnableNetworking does not pass through header info
- Matching an array in the request body
- Header does not set if header exists and EnableNetworking() HOT 1
- is there any solution to generate response in the runtime? HOT 1
- use JSON() as post body matcher, does the order of fields in the body affect matching result HOT 1
- Lack of clarity about the usage of `gock.New` and how it only matches hosts
- Want to take over toxy, but you can't open a New Issue on archived repos.
- Gock is not intercepting unit tests request
- Add callback functionality
- How to use Gock with Parallel tests HOT 1
- feature request: support nock's "Repeat response n times" HOT 1
- can not mock successfully when using `gock.EnableNetworking()` HOT 4
- not matching GET request
- panic on go 1.17 HOT 1
- How to test google api using gock?
- Mocked response with 301 status code and location header returns an error HOT 1
- My tests fail with GitHub Actions: mocks seem to be ignored 🤷 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gock.