Тестирование модуля
Unit-, интеграционные и E2E-тесты для модуля Nuxt.
Тесты помогают убедиться, что модуль работает в разных конфигурациях. Ниже — как проводить разные виды тестов.
Unit-тесты
Обсуждение и поиск способов упростить unit- и интеграционное тестирование модулей Nuxt продолжается.
Участвовать в обсуждении (RFC).
Участвовать в обсуждении (RFC).
E2E-тесты
Nuxt Test Utils — основная библиотека для E2E-тестирования модуля. Типичный порядок:
- Создать Nuxt-приложение как «фикстуру» в
test/fixtures/* - В тесте поднять Nuxt с этой фикстурой
- Взаимодействовать с фикстурой через утилиты
@nuxt/test-utils(например, запрос страницы) - Проверять результат (например, «HTML содержит …»)
- Повторять для других сценариев
Пример фикстуры:
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 как обычный пакет.