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

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

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

Юнит-тесты

Форматы юнит- и интеграционных тестов для модулей ещё обсуждаются.

Обсуждение в RFC.

E2E-тесты

Nuxt Test Utils — основной способ E2E. Схема:

  1. Nuxt-приложение-фикстура в test/fixtures/*
  2. В тесте поднять Nuxt с этой фикстурой
  3. Обращаться к приложению через @nuxt/test-utils (например $fetch)
  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 в стартере удобен при разработке (см. раздел «Разработка»).

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