ГлавнаяПесочницаВитринаПриложениеДокументБлог
    • Englishанглийский
      EN
    • русскийрусский
      RU
    • 日本語японский
      JA
    • françaisфранцузский
      FR
    • 한국어корейский
      KO
    • 中文китайский
      ZH
    • españolиспанский
      ES
    • Deutschнемецкий
      DE
    • العربيةарабский
      AR
    • italianoитальянский
      IT
    • British Englishбританский английский
      EN-GB
    • portuguêsпортугальский
      PT
    • हिन्दीхинди
      HI
    • Türkçeтурецкий
      TR
    • polskiпольский
      PL
    • Indonesiaиндонезийский
      ID
    • Tiếng Việtвьетнамский
      VI
    • українськаукраинский
      UK
    /
    Фильтровать документы по фреймворку
    Alt+←
    Почему Intlayer?
    Начать
    Концепция
    • Как работает Intlayer
    • Конфигурация
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Визуальный редактор
    • CMS
    • Интеграция CI/CD
    • ПереводМножественное числоПеречислениеУсловиеПолВставкаФайлВложенностьMarkdownHTMLПолучение функции
    • Файл для каждой локали
    • Компилятор
    • Автозаполнение
    • Тестирование
    • Оптимизация пакета
    Окружающая среда
    • Next.js 14 и App Router
      Next.js 15
      Next.js без locale URL
      Next.js и Page Router
      Compiler
    • Tanstack Start Solid
    • Astro и React
      Astro и Svelte
      Astro и Vue
      Astro и Solid
      Astro и Preact
      Astro и Lit
      Astro и Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt и Vue
    • Vite и Solid
    • SvelteKit
    • Vite и Preact
    • Vite и Vanilla JS
    • Vite и Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native и Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx и React
    Plugins
    • JSON
    • gettext (.po)
    Расширение VS Code
    Агент
    • Сервер MCP
    • Навики агента
    Релизы
    • v8
    • v7
    • v6
    Бенчмарк
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Блог
    Задать вопрос
    1. Documentation
    2. Testing
    Создание:2025-03-01Последнее обновление:2025-09-20
    Ссылайтесь на этот документ на ваш любимый ассистент AI
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI

    Этот документ устарел, базовая версия была обновлена 5 октября 2025 г..

    Перейти к английской документации

    История версий

    1. "Введение тестирования"
      v6.0.020.09.2025

    Содержимое этой страницы было переведено с помощью ИИ.

    Смотреть последнюю версию оригинального контента на английском
    Изменить эту документацию

    Если у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.

    Ссылка на документацию GitHub
    Копировать

    Копировать Markdown документа в буфер обмена

    Тестирование вашего контента

    Это руководство показывает, как автоматически проверять полноту ваших словарей, выявлять отсутствующие переводы до выпуска и тестировать локализованный пользовательский интерфейс в вашем приложении.


    Что вы можете тестировать

    • Отсутствующие переводы: провалить CI, если для любого словаря отсутствуют обязательные локали.
    • Отрисовка локализованного UI: рендерить компоненты с провайдером конкретной локали и проверять видимый текст/атрибуты.
    • Аудиты во время сборки: запускать быстрый аудит локально через CLI.

    Быстрый старт: аудит через CLI

    Запустите аудит из корня вашего проекта:

    bash
    Копировать код

    Копировать код в буфер обмена

    npx intlayer content test

    Полезные флаги:

    • --env-file [path]: загрузить переменные окружения из файла.
    • -e, --env [name]: выбрать профиль окружения.
    • --base-dir [path]: задать базовую директорию приложения для разрешения путей.
    • --verbose: показывать подробные логи.
    • --prefix [label]: добавлять префикс к строкам логов.

    Примечание: CLI выводит подробный отчет, но не завершает работу с ошибкой при обнаружении проблем. Для контроля в CI добавьте юнит-тест (ниже), который проверяет отсутствие отсутствующих обязательных локалей.


    Программное тестирование (Vitest/Jest)

    Используйте API Intlayer CLI, чтобы проверить, что отсутствующих переводов для обязательных локалей нет.

    Копировать код

    Копировать код в буфер обмена

    /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("переводы", () => {  it("отсутствуют обязательные локали", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // Полезно, когда тест не проходит локально или в CI      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});

    Эквивалент для Jest:

    Копировать код

    Копировать код в буфер обмена

    import { listMissingTranslations } from "intlayer/cli";test("отсутствуют обязательные локали", () => {  const result = listMissingTranslations();  if (result.missingRequiredLocales.length > 0) {    console.log(result.missingTranslations);  }  expect(result.missingRequiredLocales).toHaveLength(0);});

    Как это работает:

    • Intlayer читает вашу конфигурацию (locales, requiredLocales) и объявленные словари, затем сообщает:
      • missingTranslations: для каждого ключа, какие локали отсутствуют и из какого файла.
      • missingLocales: объединение всех отсутствующих локалей.
      • missingRequiredLocales: подмножество, ограниченное requiredLocales (или все локали, если requiredLocales не установлены).

    Тестирование локализованного UI (React / Next.js)

    Рендерьте компоненты под провайдером Intlayer и проверяйте видимый контент.

    Пример для React (Testing Library):

    tsx
    Копировать код

    Копировать код в буфер обмена

    import { IntlayerProvider } from "react-intlayer/client";import { render, screen } from "@testing-library/react";import { MyComponent } from "./MyComponent";test("renders localized title in English", () => {  render(    <IntlayerProvider locale="en-US">      <MyComponent />    </IntlayerProvider>  );  expect(    screen.getByText("Ожидаемый английский заголовок")  ).toBeInTheDocument();});

    Пример для Next.js (App Router): используйте обертку фреймворка:

    tsx
    Копировать код

    Копировать код в буфер обмена

    import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("отображает локализованный заголовок на французском", () => {  render(    <IntlayerClientProvider locale="fr-FR">      <MyPage />    </IntlayerClientProvider>  );  expect(    screen.getByRole("heading", { name: "Titre attendu" })  ).toBeInTheDocument();});

    Советы:

    • Когда вам нужны необработанные строковые значения для атрибутов (например, aria-label), обращайтесь к полю .value, возвращаемому useIntlayer в React.
    • Храните словари рядом с компонентами для упрощения модульного тестирования и очистки.

    Непрерывная интеграция

    Добавьте тест, который будет прерывать сборку, если отсутствуют необходимые переводы.

    package.json:

    json
    Копировать код

    Копировать код в буфер обмена

    {  "scripts": {    "test:i18n": "vitest run -c"  }}

    Пример GitHub Actions:

    yaml
    Копировать код

    Копировать код в буфер обмена

    name: CIon: [push, pull_request]jobs:  test:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - uses: actions/setup-node@v4        with:          node-version: 20      - run: npm ci      - run: npm run test:i18n

    Опционально: запустите аудит CLI для получения удобочитаемого отчёта вместе с тестами:

    bash
    Копировать код

    Копировать код в буфер обмена

    npx intlayer content test --verbose

    Устранение неполадок

    • Убедитесь, что ваша конфигурация Intlayer определяет locales и (опционально) requiredLocales.
    • Если ваше приложение использует динамические или удалённые словари, запускайте тесты в среде, где эти словари доступны.
    • Для смешанных монорепозиториев используйте --base-dir, чтобы указать CLI правильный корень приложения.

    Автозаполнение
    Оптимизация пакета
    Alt+→

    На этой странице

      Обсуждения анонимны и регулярно просматриваются для решения распространённых проблем. Не стесняйтесь делиться идеями функций, отзывами о документации или чем-либо, связанным с Intlayer, мы используем эту информацию для формирования нашей дорожной карты и улучшения продукта.

      npx intlayer content test
      /* @vitest-environment node */import { listMissingTranslations } from "intlayer/cli";import { describe, expect, it } from "vitest";describe("переводы", () => {  it("отсутствуют обязательные локали", () => {    const result = listMissingTranslations();    if (result.missingRequiredLocales.length > 0) {      // Полезно, когда тест не проходит локально или в CI      console.log(result.missingTranslations);    }    expect(result.missingRequiredLocales).toHaveLength(0);  });});
      import { listMissingTranslations } from "intlayer/cli";test("отсутствуют обязательные локали", () => {  const result = listMissingTranslations();  if (result.missingRequiredLocales.length > 0) {    console.log(result.missingTranslations);  }  expect(result.missingRequiredLocales).toHaveLength(0);});
      import { IntlayerProvider } from "react-intlayer/client";import { render, screen } from "@testing-library/react";import { MyComponent } from "./MyComponent";test("renders localized title in English", () => {  render(    <IntlayerProvider locale="en-US">      <MyComponent />    </IntlayerProvider>  );  expect(    screen.getByText("Ожидаемый английский заголовок")  ).toBeInTheDocument();});
      import { IntlayerClientProvider } from "next-intlayer/client";import { render, screen } from "@testing-library/react";import { MyPage } from "./MyPage";test("отображает локализованный заголовок на французском", () => {  render(    <IntlayerClientProvider locale="fr-FR">      <MyPage />    </IntlayerClientProvider>  );  expect(    screen.getByRole("heading", { name: "Titre attendu" })  ).toBeInTheDocument();});
      {  "scripts": {    "test:i18n": "vitest run -c"  }}
      name: CIon: [push, pull_request]jobs:  test:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - uses: actions/setup-node@v4        with:          node-version: 20      - run: npm ci      - run: npm run test:i18n
      npx intlayer content test --verbose