From bb6d9f0af68ce7ec22e4f144db9e9a91624bbf05 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Sun, 19 Apr 2026 16:10:03 +0900 Subject: [PATCH] test(query-core/queryObserver): add test for not tracking error prop when 'throwOnError' is not set --- .../src/__tests__/queryObserver.test.tsx | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/packages/query-core/src/__tests__/queryObserver.test.tsx b/packages/query-core/src/__tests__/queryObserver.test.tsx index 58306f072c0..a89c3dfc90a 100644 --- a/packages/query-core/src/__tests__/queryObserver.test.tsx +++ b/packages/query-core/src/__tests__/queryObserver.test.tsx @@ -1368,6 +1368,40 @@ describe('queryObserver', () => { unsubscribe() }) + test('should not track error prop when throwOnError is not set', async () => { + const key = queryKey() + const results: Array = [] + const observer = new QueryObserver(queryClient, { + queryKey: key, + queryFn: () => Promise.reject('error'), + retry: false, + }) + + const trackedResult = observer.trackResult( + observer.getCurrentResult(), + (prop) => { + if (prop === 'data') { + observer.trackProp(prop) + } + }, + ) + + trackedResult.data + + const unsubscribe = observer.subscribe((result) => { + results.push(result) + }) + + await vi.advanceTimersByTimeAsync(0) + + // Without throwOnError, `error` is not auto-added to trackedProps. + // Since only `data` is tracked and it did not change (stayed undefined), + // the listener is not invoked even though `error` prop changed. + expect(results.length).toBe(0) + + unsubscribe() + }) + test('should reject promise when experimental_prefetchInRender is disabled and thenable is pending', async () => { const key = queryKey() const queryClient2 = new QueryClient({