diff --git a/vitest.setup.ts b/vitest.setup.ts index d4f262a..a2bae5d 100644 --- a/vitest.setup.ts +++ b/vitest.setup.ts @@ -1,11 +1,10 @@ import '@testing-library/jest-dom'; import { afterEach, beforeEach, vi } from 'vitest'; import React from 'react'; +import zhMessages from './public/_locales/zh/messages.json'; -// Load actual zh translations for getMessage mock -const zhMessages: Record = - // eslint-disable-next-line @typescript-eslint/no-require-imports - require('./public/_locales/zh/messages.json'); +// Type assertion to allow string indexing +const zhMessagesMap = zhMessages as Record; vi.mock('@/utils/chromeI18n', () => ({ useI18n: (ns?: string | string[]) => ({ @@ -16,13 +15,13 @@ vi.mock('@/utils/chromeI18n', () => ({ msgId = key.replace(':', '_').replace(/\./g, '_'); } // Try direct key first - if (zhMessages[msgId]) return zhMessages[msgId].message; + if (zhMessagesMap[msgId]) return zhMessagesMap[msgId].message; // Try namespace prefix (using converted msgId) if (ns) { const namespaces = Array.isArray(ns) ? ns : [ns]; for (const n of namespaces) { const candidate = `${n}_${msgId}`; - if (zhMessages[candidate]) return zhMessages[candidate].message; + if (zhMessagesMap[candidate]) return zhMessagesMap[candidate].message; } } return msgId; @@ -33,7 +32,7 @@ vi.mock('@/utils/chromeI18n', () => ({ }, isLoaded: true, }), - getMessage: (msgId: string) => zhMessages[msgId]?.message ?? msgId, + getMessage: (msgId: string) => zhMessagesMap[msgId]?.message ?? msgId, getLanguage: () => 'zh', preloadNamespaces: vi.fn().mockResolvedValue(undefined), }));