From 17b1348f5ddfe295504ab63cd14afbd48de229bb Mon Sep 17 00:00:00 2001 From: gahusb Date: Thu, 9 Jul 2026 16:23:40 +0900 Subject: [PATCH] =?UTF-8?q?fix(listings):=20=EC=A1=B0=EA=B1=B4=20=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20=EC=8B=A4=ED=8C=A8=20=EC=8B=9C=20=EB=AC=B4=ED=95=9C?= =?UTF-8?q?=20=EB=A1=9C=EB=94=A9=20=EB=8C=80=EC=8B=A0=20=EC=97=90=EB=9F=AC?= =?UTF-8?q?=20=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 리뷰 지적: getListingsCriteria 실패 시 c=null로 남아 '불러오는 중…' 가 영구 표시되고 에러 메시지가 unreachable. 가드를 loading/!c로 분리해 실패 시 에러를 렌더 + 실패 경로 테스트 추가. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01UHXzpsZQxKG9hQmNRfZjRS --- src/pages/listings/components/CriteriaTab.jsx | 3 ++- src/pages/listings/components/CriteriaTab.test.jsx | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pages/listings/components/CriteriaTab.jsx b/src/pages/listings/components/CriteriaTab.jsx index 5ea32a6..19e8804 100644 --- a/src/pages/listings/components/CriteriaTab.jsx +++ b/src/pages/listings/components/CriteriaTab.jsx @@ -59,7 +59,8 @@ const CriteriaTab = () => { } finally { setSaving(false); } }; - if (loading || !c) return

불러오는 중…

; + if (loading) return

불러오는 중…

; + if (!c) return

{msg || '조건을 불러오지 못했습니다.'}

; return (
diff --git a/src/pages/listings/components/CriteriaTab.test.jsx b/src/pages/listings/components/CriteriaTab.test.jsx index 1e00c45..bc60174 100644 --- a/src/pages/listings/components/CriteriaTab.test.jsx +++ b/src/pages/listings/components/CriteriaTab.test.jsx @@ -21,4 +21,11 @@ describe('CriteriaTab', () => { expect(screen.getByLabelText(/연소득/)).toBeInTheDocument(); expect(screen.getByDisplayValue('신대방동, 상도동')).toBeInTheDocument(); }); + + it('로드 실패 시 무한 로딩 대신 에러를 표시', async () => { + getListingsCriteria.mockRejectedValue(new Error('HTTP 500')); + render(); + await waitFor(() => expect(screen.getByText(/불러오지 못했|HTTP 500/)).toBeInTheDocument()); + expect(screen.queryByText('불러오는 중…')).not.toBeInTheDocument(); + }); });