Тестирование модуля

Unit-, интеграционные и E2E-тесты для модуля Nuxt.

Тесты помогают убедиться, что модуль работает в разных конфигурациях. Ниже — как проводить разные виды тестов.

Unit-тесты

Обсуждение и поиск способов упростить unit- и интеграционное тестирование модулей Nuxt продолжается.

Участвовать в обсуждении (RFC).

E2E-тесты

Nuxt Test Utils — основная библиотека для E2E-тестирования модуля. Типичный порядок:

  1. Создать Nuxt-приложение как «фикстуру» в test/fixtures/*
  2. В тесте поднять Nuxt с этой фикстурой
  3. Взаимодействовать с фикстурой через утилиты @nuxt/test-utils (например, запрос страницы)
  4. Проверять результат (например, «HTML содержит …»)
  5. Повторять для других сценариев

Пример фикстуры:

test/fixtures/ssr/nuxt.config.ts
// 1. Nuxt-приложение как фикстура
import MyModule from '../../../src/module'

export default defineNuxtConfig({
  ssr: true,
  modules: [
    MyModule,
  ],
})

И теста:

test/rendering.ts
import { describe, expect, it } from 'vitest'
import { fileURLToPath } from 'node:url'
import { $fetch, setup } from '@nuxt/test-utils/e2e'

describe('ssr', async () => {
  // 2. Поднять Nuxt с фикстурой
  await setup({
    rootDir: fileURLToPath(new URL('./fixtures/ssr', import.meta.url)),
  })

  it('рендерит главную страницу', async () => {
    // 3. Взаимодействие через @nuxt/test-utils
    const html = await $fetch('/')

    // 4. Проверки
    expect(html).toContain('<div>ssr</div>')
  })
})

// 5. Повтор для других сценариев
describe('csr', async () => { /* ... */ })
Пример такого подхода — в стартовом шаблоне модуля.

Ручное тестирование

Playground-приложение в репозитории модуля удобно для ручной проверки при разработке. В стартовом шаблоне оно уже есть.

Можно тестировать модуль в других Nuxt-приложениях (вне репозитория модуля). Создайте tarball модуля командой npm pack (или аналогом вашего пакетного менеджера). В тестовом проекте в package.json добавьте зависимость: "my-module": "file:/path/to/tarball.tgz". После этого подключайте my-module как обычный пакет.