-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Closed
Closed
Copy link
Labels
Description
Issue Description
Issue occurs in Angular 17 project while executing a Jest test running in fakeAsync
zone, imported from @angular/core/testing
(pseudo-code):
it('executes ApolloClient in a fakeAsync zone', fakeAsync(() => {
TestBed.inject(ApolloTestingController).expectOne(...).flush(...);
}));
Result: test fails with Error: 2 timer(s) still in the queue.
Packages:
"@angular/core": "17.3.4",
"@apollo/client": "3.9.0"
"apollo-angular": "6.0.0",
"jest": "29.7.0"
Offending code is located in utilities.cjs :
var scheduledCleanup = new WeakSet();
function schedule(cache) {
if (!scheduledCleanup.has(cache)) {
scheduledCleanup.add(cache);
setTimeout(function () {
cache.clean();
scheduledCleanup.delete(cache);
}, 100); <-- this timeout causes the error in async tests
}
}
var AutoCleanedWeakCache = function (max, dispose) {
var cache = new caches.WeakCache(max, dispose);
cache.set = function (key, value) {
schedule(this);
return caches.WeakCache.prototype.set.call(this, key, value);
};
return cache;
};
The issue is unrelated to apollo-angular
, this package is just being used as a wrapper around ApolloClient (ApolloTestingController used in the test is part of it).
Downgrading @apollo/client
to v3.8.10, solves the issue!
Link to Reproduction
Reproduction Steps
No response
@apollo/client
version
3.9.0+
bougwal