Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente...

32
Jest Alejandro León Pereira Andrés Fernández González María González Gancedo Iñaki Salgado Uralde Pablo González Argüelles SemEs1-05

Transcript of Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente...

Page 1: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Jest▪ Alejandro León Pereira

▪ Andrés Fernández González

▪ María González Gancedo

▪ Iñaki Salgado Uralde

▪ Pablo González Argüelles

SemEs1-05

Page 2: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

¿Qué es Jest?

Framework de JavaScript que permiten realizar

pruebas automatizadas

Enfoque simple

Creado por los ingenieros de Facebook

Viene integrado en React

Funciona en proyectos con:

Page 3: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Factores importantes:

Sin configuración

Gran API : Bien documentado, bien mantenido.

Aislamiento: pruebas ejecutadas en sus propios procesos

Instantáneas / Snapshots: rastrea objetos grandes con facilidad

Page 4: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Características:

Rápido y seguro

Cobertura de código

Mock Functions

Grandes excepciones

Charlas y documentos

Open Collective

Page 5: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

¿Quién usa Jest?

Page 6: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Ejemplo

# yarn add --dev jest

# npm install --save-dev jest

sum.js

sum.test.jspackage.json

# yarn test

# npm run test

1 2

3 4

5 6

Page 7: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Ingenieros de Facebook

Stakeholders

Desarrolladores

El equipo Fundación

JavaScript de Facebook

Clientes

Page 8: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Principales atributos de

calidad y restricciones

Page 9: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Atributos de Calidad

Comportamiento temporal

Velocidad 6x

Capacidad para ser instalado

Simple dependencia

Adaptabilidad

Cualquier framework o biblioteca JS

Page 10: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Restricciones

Poca flexibilidad en proyectos muy grandes

Difícil personalización

No está optimizado para pruebas end2end

Falta de madurez

Page 11: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Aspectos

de

desarrollo

¿Qué quiere decir esto?

Módulos y arquitectura

Issues

Page 12: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Aspectos

de

desarrollo

¿Cómo ayudar con el desarrollo?

Código de conducta para desarrollar

Good first issues

Page 13: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Aspectos de desarrollo

Page 14: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Módulos

y

Componentes

Módulos aislados

Mocking

Objeto Jest

Page 15: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Módulos aislados

Jest tiene la capacidad de simular los módulos que desarrollamos en nuestra aplicación

Esta técnica se denomina Mocking

El objeto Jest está al alcance de todos los archivos de prueba

Page 16: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Objeto Jest

enableAutomock()

disableAutomock()

Page 17: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Objeto Jest

mock(moduleName,factory,options)

genMockFromModule(modulename)

Page 18: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Objeto Jest

doMock(moduleName,factory,options)

unmock(modulename)

dontMock(modulename)

Page 19: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Objeto Jest

requireActual(moduleName)

setMock(modulename,moduleExports)

requireMock(modulename)

Page 20: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Objeto Jest

isolateModules(fn)

resetModules()

Page 21: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Arquitectura que hay detrás de Jesthttps://jestjs.io/docs/en/architecture#__docusaurus

En la página oficial de Jest se puede encontrar un vídeo

detallando suarquitectura, cómo funciona Jest por debajo.

Page 22: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API
Page 23: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Las diferentes opciones de configuración de Jest

(Jest CLI options) pueden encontrarse en: https://jestjs.io/docs/en/configuration

Page 24: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Y pueden utilizarse añadiendose directamente al

package.json o a un archivo jest.config

Por ejemplo, verbose se utiliza para mostrar información por

consola del estado actual de los test

Page 25: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Detrás de Jest, está Facebookhttps://opensource.facebook.com/

https://github.com/facebook/jest

Page 26: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Arquitectura limpia

Robert C. Martin

Creador de los principios del software limpio

Obras destacadas:

Clean code: A Handbook of Agile Software Craftsmanship

Page 27: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API
Page 28: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

EXOR

Page 29: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Código limpio VS Jest

Código limpio

Mejor mantenimiento de proyectos

a largo plazo

Reducción del coste de

mantenimiento del proyecto,

debido a que es más accesible, ya

que no se necesita gente experta en ningún framework determinado.

Jest

Lost tests corren en paralelo

La API está documentada

Fácil configuración

Control de la cobertura de código

Page 30: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Aún así, Jest tiene sus ventajas...

Page 31: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Jest VS no-framework testing

Jest (cobertura de código) Clean code testing (sencillez)

Page 32: Jest - arquisoft.github.io€¦ · debido a que es más accesible, ya que no se necesita gente experta en ningún framework determinado. Jest Lost tests corren en paralelo La API

Jest makes testing delightful.

- Jest Core Team