Configuración de unit tests en Vue con webpack

Clase 52 de 53Curso Profesional de Vue.js 2

Resumen

Comienza a crear unit tests confiables en Vue.js sin pelear con configuraciones manuales. La plantilla completa de webpack para Vue integra de fábrica Babel, ESLint, Karma, Mocha y soporte para archivos .vue, lo que agiliza el arranque y garantiza resultados consistentes durante el desarrollo.

¿Cómo iniciar unit tests en Vue con plantilla webpack?

Usar el template completo de webpack simplifica el setup: incluye linteo con ESLint, opciones de runtime y compiler, y el armado de unit tests. Es ideal cuando ya tienes algo de experiencia con el ecosistema de Vue y quieres evitar configurar todo a mano. Dentro del proyecto, verás más archivos: carpetas de build, un dev server en Node y Express, y la sección de tests lista para usar.

  • Selecciona el template webpack y habilita el setup de unit tests.
  • Puedes omitir el router y el end-to-end testing si no lo necesitas.
  • La carpeta Test/Unit incluye la configuración inicial.
  • La experiencia de desarrollo en src se mantiene igual: compones Vue como siempre.

Comandos clave:

# Crear el proyecto con el template webpack
vue init webpack ut-demo

# Instalar dependencias y entrar al proyecto
cd ut-demo
npm install

# Ejecutar los unit tests
npm run unit

¿Qué roles cumplen Karma, Mocha y Chai en los tests?

La configuración incluye un archivo de Karma (test runner) que orquesta la ejecución de los tests, integra webpack y Babel para compilar .vue y JS, y define en qué browsers se corre. Así puedes validar en Chrome, Safari, Firefox, Internet Explorer y también en Phantom JS para desarrollo en terminal.

  • Karma: no es un framework de pruebas; es el corredor de tests que los ejecuta en múltiples contextos.
  • Mocha: el framework que define la estructura semántica con describe e it.
  • Chai: la librería de assertions para expresar expectativas con expect y comparadores como toEqual.
  • Integración con webpack y Babel: compila y resuelve .vue para que los tests usen el mismo pipeline que la app.

Beneficio clave: confiabilidad multiplataforma. Puedes correr rápido en Phantom JS durante el desarrollo y, antes de producción, validar en todos los browsers soportados.

¿Cómo escribir y ejecutar casos de prueba en un componente?

Un spec de ejemplo valida el componente por defecto Hello. Primero se monta el componente y se verifica que el H1 renderice el contenido correcto. Luego, se agrega un caso adicional para comprobar el valor en data().message, asegurando que el dato base coincide con lo que se muestra.

Estructura típica con Mocha y Chai:

// tests/unit/specs/Hello.spec.js
import Hello from '@/components/Hello.vue'

describe('Hello.vue', () => {
  it('should render correct content', () => {
    // Monta el componente y verifica el H1.
    // ... montaje del componente ...
    // expect(wrapper.find('h1').text()).toEqual('Welcome ...')
  })

  it('should has the correct text', () => {
    // Valida el dato base en data().
    expect(Hello.data().message).toEqual('Welcome ...')
  })
})

Puntos prácticos que verás en la ejecución con npm run unit:

  • Salida clara por spec y por it: verde cuando todo pasa.
  • Resumen de cantidad de tests y cobertura de líneas de código.
  • Compilación previa: se procesa toda la app con webpack y Babel antes de testear.

Habilidades y conceptos que refuerzas:

  • Estructurar pruebas con describe para agrupar funcionalidades e it para casos puntuales.
  • Escribir assertions con expect y comparadores como toEqual.
  • Probar render y estado: contenido del H1 y valor en data().message.
  • Usar package.json para scripts como npm run unit.
  • Configurar Karma para browsers múltiples y un flujo rápido con Phantom JS en desarrollo.

¿Te gustaría ver ejemplos con tu propio componente o ajustar la configuración de Karma a tus browsers objetivo? Comparte tus dudas y cuéntame tu caso.

      Configuración de unit tests en Vue con webpack