Comments (2)
@kdybicz I had the very same issue and was able to fix this, after stumbling across another issue in the undici repo, see nodejs/undici#996.
The MockAgent
does not intercept Pool requests, instead you need to injection the agent during tests.
For your tests to work, you would therefore need to adapt the constructor on your MyAPI
class to accept the mock client as a parameter.
// my-api.data-source.ts
class MyAPI extends HTTPDataSource {
constructor(pool: Pool) { // <-- Accept Pool here
super(baseUrl, {
pool,
})
}
}
// my-api.data-source.test.ts
import type { MockClient } from 'undici';
import { MockAgent, setGlobalDispatcher } from 'undici';
const mockAgent = new MockAgent();
setGlobalDispatcher(mockAgent);
mockAgent.disableNetConnect();
const mockPool = mockAgent.get<MockClient>(BASE_URL);
mockPool.intercept({ path: '/v1/something', method: 'GET' }).reply(404, '');
const api = new MyAPI(mockPool); // <-- Inject mock client here
const result = await api.doSomething('aaa', 'bbb');
I hope this solves your problem.
from apollo-datasource-http.
@dmateiu Thank You for your reply, looks like you're right and I think this might be a use case example for docs! I till need to sort out ie. if I can ensure proper timeout was set on my request, etc. but this for sure unblocks future work!
from apollo-datasource-http.
Related Issues (20)
- How to intercept HTTP request with jest? HOT 1
- requestCache.maxTtl unit HOT 1
- Make POST requests cacheable HOT 1
- `maxTtlIfError` behavior clarification. HOT 5
- Intended usage from resolver functions? HOT 3
- Request deduplication (memoization) does not occur across concurrently executing frames HOT 3
- Specific request configs don't override more general client configs.
- [QUESTION]: onRequest and query HOT 2
- [Discussion] How to dedupe concurrent memoizable requests? HOT 5
- [Proposal]: Support caching responses without JSON.stringify HOT 1
- Error upon receiving a compressed response. HOT 6
- [Security] Upgrade Undici dependency to latest version
- [Performance] Using x2 to x3 more cache memory and bandwidth than apollo-datasource-rest HOT 7
- [Proposal] Make the maxTtlIfError optional HOT 1
- FormData body is being coerced to JSON
- Handling application/vnd.api+json content type
- Connection pool cache
- Return response Headers in Apollo response
- Dynamic baseURL
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 apollo-datasource-http.