CursosEmpresasBlogLiveConfPrecios

Pruebas Unitarias y Mocking en Vue con Jest

Clase 12 de 12 • Curso de Testing con Vue.js 2

Contenido del curso

Introducción

  • 1
    Pruebas en Proyectos de Software con Vue y Automatización

    Pruebas en Proyectos de Software con Vue y Automatización

    01:03 min
  • 2
    Pruebas Unitarias e Integración en Desarrollo de Software

    Pruebas Unitarias e Integración en Desarrollo de Software

    03:29 min
  • 3
    Evolución de Pruebas de Software: De Turing a la Calidad Actual

    Evolución de Pruebas de Software: De Turing a la Calidad Actual

    02:16 min
  • 4
    Preparación para pruebas de proyectos Vue con NPM y Vue Test Utils

    Preparación para pruebas de proyectos Vue con NPM y Vue Test Utils

    01:11 min

Entendiendo las pruebas

  • 5
    Pruebas de Entradas y Salidas en Componentes Vue

    Pruebas de Entradas y Salidas en Componentes Vue

    01:44 min

Herramientas de desarrollo

  • 6
    Pruebas unitarias en Vue con Test Utils: Introducción práctica

    Pruebas unitarias en Vue con Test Utils: Introducción práctica

    02:51 min
  • 7
    Pruebas unitarias con Jest: detección de anomalías y defectos

    Pruebas unitarias con Jest: detección de anomalías y defectos

    03:55 min

Desarrollo de pruebas

  • 8
    Aplicar TDD en Vue: Desarrollo y Pruebas de Funcionalidades

    Aplicar TDD en Vue: Desarrollo y Pruebas de Funcionalidades

    02:15 min
  • 9
    Pruebas de Software con Mocking en Aplicaciones de JavaScript

    Pruebas de Software con Mocking en Aplicaciones de JavaScript

    03:05 min
  • 10
    Pruebas Unitarias con Jest y Vue Test Utils

    Pruebas Unitarias con Jest y Vue Test Utils

    04:42 min
  • 11
    Pruebas Unitarias y Asíncronas en Vue con $nextTick

    Pruebas Unitarias y Asíncronas en Vue con $nextTick

    03:09 min

Tips y buenas prácticas

  • 12
    Pruebas Unitarias y Mocking en Vue con Jest

    Pruebas Unitarias y Mocking en Vue con Jest

    Viendo ahora
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

      Ya vimos lo que se requiere para realizar pruebas en Vue y como hacer estas pruebas. Ahora, te mostraré una que otra cosa que podríamos hacer mejor y cosas que a mi me orillaron a hablar de este tema.

      Semántica

      La semántica hace alusión al claro entendimiento léxico de tus pruebas.Sé que suena raro, es super sencillo. Básicamente es que se puedan entender tus pruebas como si estuvieran leyendo un libro.

      Nosotros venimos utilizando la función test() para hacer las pruebas. Pero podríamos sustituirla por la función it(), hacen exactamente lo mismo, pero al momento de leer nuestra prueba podríamos leerla como una oración, e.g.

      describe(' Making an assertion that',()=>{ it('should test something',()=>{ } }

      Fácil de entender y fácil de aplicar.

      No solamente tenemos esta alternativa, sino que entre los matchers tenemos mucha variedad. e.g.

      En vez de hacer algo como:

      expect(something).toBe(true)

      Podemos tener algo como esto:

      expect(something).resolves.not.toHaveReturned(false)

      Esto nos va a ayudar mucho, no solamente a nosotros sino que los demás desarrolladores que revisen nuestro código te amarán por esto.

      Mocking de un endpoint de una API

      Para hacer un mocking de una API en producción, lo primero que debes tener es que tu función que hace la petición, regrese una promesa. Esta promesa, es la misma que se utiliza cuando requieres hacer una implementación asíncrona, mandas esta promesa y esperas a que se resuelva.

      Lo mostraré con nuestro proyecto:

      1.png

      Esa es mi función que hace la llamada y regresa la promesa. Nota que es una función asíncrona y que estoy usando una librería para hacer peticiones llamada axios, esta librería nos va a ayudar a hacer las pruebas mucho más fácil también.

      Ya en nuestro archivo de pruebas, lo que debemos hacer primero es importar los módulos que vayamos a utilizar.

      import axios from 'axios'; import { shallowMount } from '@vue/test-utils' import App from '@/App'

      Lo siguiente es hacer el mock de nuestro módulo de axios, eso va a significar que la llamada que hicimos con esa librería la vamos a interceptar y hacer un mock.

      jest.mock('axios', () => ({ get: jest.fn(() => Promise.resolve({ data: 3 })) }));

      Con esa función interceptamos el módulo de axios, el método get y le pusimos la salida que nosotros quisimos.

      Ya lo único que hace falta es escribir nuestras pruebas y listo.

      describe('Fetching data from mock service', () => { test('Testing the data from the resolved promise', async () => { const wrapper = shallowMount(App) const res = await wrapper.vm.makeRequest() expect(res).toEqual({ data: 3 }) expect(axios.get).toBeCalledWith('https://pokeapi.co/api/v2/pokemon/0') })

      En esta prueba, llamamos al método que hace la llamada, y si vemos la respuesta que trae, es la que nosotros definimos, super cool, ¿no?

      Code coverage

      Este es un tema muy interesante, la primera vez que lo vi, me impresionó bastante.

      La premisa de esto es simple. De las pruebas que hagas, se hace un recuento de las líneas de código que existen y se muestra cuantas líneas abarcaron tus pruebas.

      Para activar esto en nuestro proyecto solamente debemos de meternos a nuestro archivo jest.config.js

      Ponemos estas líneas de código:

      "collectCoverage": true, "collectCoverageFrom": ["**/*.{js,vue}", "!**/node_modules/**"]

      Y listo, solo corremos nuestras pruebas y veremos la magia.

      No muestro screenshot, porque quiero que tú mismo veas la sorpresa


      Me encanto estar contigo en este viaje de sudor y lágrimas. El aprender algo nuevo jamás es sencillo y tú ya estás un paso más adelante de todo al decidir tomar esta oportunidad que la vida te está dando.

      Gracias por tomar este curso y espero verte de nuevo.

      Te invito a que apruebes el examen del curso y me dejes tu review para conocer tu feedback.

      ¡Nunca pares de aprender!

      Comentarios

        Juan Esteban Galvis

        Juan Esteban Galvis

        student•
        hace 6 años

        Me encanto el curso, recomiendo los siguientes cursos:

        • Curso de Jest (Aunque este des-actualizado es el único que hay): https://platzi.com/clases/js-jest-2019/

        • Curso de Jest con React: https://platzi.com/clases/jest/

        • Curso de Pruebas de software https://platzi.com/clases/pruebas-software/

        • Curso de Buenas Prácticas para escritura de código (Hay un modulo sobre nociones de testing): https://platzi.com/clases/mejor-codigo/

        Para integración Continua: https://platzi.com/clases/travis/

        Angel Archbold

        Angel Archbold

        student•
        hace 5 años

        Entendi bastante bien, pero el codigo estaba demasiado desorganizado. El tema estuvo bien explicado, pero falto un poco de orden   🥺

        Carlos Eduardo Gomez García

        Carlos Eduardo Gomez García

        teacher•
        hace 5 años

        Estuvo bien como un acercamiento a las pruebas pero me hubiese gustado profundizar mucho más en este tema con Vue, ya que hay muchos temas que se podrían explicar mucho mejor, pero estuvo bien ^^

        Arlex Felipe Llanos Betancourt

        Arlex Felipe Llanos Betancourt

        student•
        hace 5 años

        El curso como introductorio estuvo muy bien, es claro que hay mucho más contenido en esto de las pruebas unitarias y de integración, siempre escucho mencionarlas para Backend, pero es bueno también ver que en Frontend existen y como o que puntos deberían tenerse en cuenta, gracias!

        Luis Miguel Mejia Martinez

        Luis Miguel Mejia Martinez

        student•
        hace 5 años

        Gracias por el curso, para mí fue una aproximación a este mundo de las pruebas unitarias

        Jose Daniel Barría Reyes

        Jose Daniel Barría Reyes

        student•
        hace 6 años

        Muy buen curso! gracias por todos los recursos que me diste! Lo intentare aplicar en mis proyectos lo mas que pueda! Saludos!

        Cristian Adrian Ayala

        Cristian Adrian Ayala

        student•
        hace 6 años

        Gracias por el curso César, muy bueno el contenido.

        Kevin Nick Pascual Tuesta

        Kevin Nick Pascual Tuesta

        student•
        hace 6 años

        Algún curso que recomienden para continuar con esto de las pruebas y la integración continua.

          Enrique Devars

          Enrique Devars

          teacher•
          hace 6 años

          Para integración continua podrías ver el de Travis CI.

        Sebastián Buitrago

        Sebastián Buitrago

        student•
        hace 5 años

        Estuvo muy bueno el curso hubiera sido genial que dejara el repo donde quedara todo el codigo para poder revisarlo en caso de typos

        Eduardo Pech

        Eduardo Pech

        student•
        hace 5 años

        Excelente contenido para empezar a hacer testing.