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(); + }); });