QuiiBz / next-international

Type-safe internationalization (i18n) for Next.js
https://next-international.vercel.app
MIT License
1.19k stars 52 forks source link

Unit testing with createI18nServer in server-side components throws server-only error #406

Open Deer404 opened 1 month ago

Deer404 commented 1 month ago

Describe the bug I encountered a server-only error when using createI18nServer in server-side components for unit testing.

To Reproduce Steps to reproduce the behavior:

  1. Use createI18nServer in a server-side component.
  2. Run the unit tests.

Expected behavior

Screenshots

// demo.test.tsx
import { describe, it, vi } from 'vitest'
import { render, screen, waitFor } from './customRender' 
import { createI18nServer } from 'next-international/server'

describe('Example test', () => {
  vi.mock("@server-only", () => ({}));
  it('just an example', async () => {
    const { getI18n } = createI18nServer({
      en: () => import('../locales/messages/enUS'),
    })

    async function App() {
      const t = await getI18n()

      return <p>{t("login.welcome")}</p>
    }

    render(
      <App/>
    )

    await waitFor(() => {
      expect(screen.getByText('Welcome to the platform')).toBeInTheDocument()
    })
  })
})

About (please complete the following information):

Deer404 commented 1 month ago

@QuiiBz