Mockear o no mockear - Esa es la pregunta

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Mockear o no mockear, esa es la pregunta. Si es más noble para el código de los programadores involucrarse con espías y stubs en pruebas extravagantes, o tomar los componentes reales contra un mar de tiempos de espera, y soportar, para validar su código: comprometerse, hacer push.

This talk has been presented at React Advanced 2021, check out the latest edition of this React Conference.

FAQ

La programación extrema es un marco ágil creado por Kent Beck en 1996 que permite producir y entregar software de alta calidad a un ritmo muy rápido, enfocándose en principios como comunicación, simplicidad, retroalimentación, valentía y respeto.

En SDC, los equipos están compuestos por diseñadores, gerentes de producto y desarrolladores. Estos equipos trabajan de forma equilibrada para investigar, diseñar y desarrollar soluciones tecnológicas.

En SDC, la revisión de código se realiza en vivo mediante la programación en pareja, donde dos programadores trabajan juntos en el mismo código, lo que elimina la necesidad de revisiones de código adicionales.

SDC utiliza el desarrollo impulsado por pruebas y la programación en pareja. Primero se escriben pruebas, se ejecutan y se espera que fallen antes de corregir el código, asegurando así la calidad y eficiencia del desarrollo.

El diseño atómico, definido por Brad Frost en 2013, es un método para organizar componentes visuales en un sistema de diseño, donde los elementos se estructuran desde los más simples (átomos) hasta los más complejos (moléculas, organismos, plantillas y páginas).

SDC gestiona su biblioteca con un sistema simple donde los empleados anotan en un bloc de notas el libro que toman y la fecha de retorno. Se ha propuesto digitalizar este sistema para modernizar la gestión.

SDC utiliza React para desarrollar componentes de interfaz de usuario, siguiendo los principios del diseño atómico para estructurar los elementos visuales de la aplicación.

Rita Castro
Rita Castro
25 min
25 Oct, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta Charla discute el enfoque de SDC para el desarrollo de software utilizando metodologías ágiles y programación extrema. Se destacan los beneficios de la programación en pareja y el uso del diseño atómico en los componentes de React. Se enfatiza la importancia del desarrollo impulsado por pruebas y la biblioteca de pruebas de React, junto con la implementación de código, navegación y validación de formularios utilizando Formik y Yup. La charla también aborda las capas de abstracción en el desarrollo de software y las pruebas de los recorridos de usuario y la accesibilidad en la aplicación BookKeeper.

1. Introducción a SDC y Desarrollo Ágil

Short description:

En esta charla, intentaremos responder a la pregunta de si hacer una simulación o no. Soy Rita, una apasionada de la tecnología, viviendo en Lisboa y trabajando en SDC. SDC es un centro de desarrollo de software establecido en 2018. Desarrollamos productos utilizando programación extrema, un marco ágil basado en la comunicación, simplicidad, retroalimentación, valentía y respeto. Trabajamos en equipos equilibrados, que incluyen diseñadores, gerentes de producto y desarrolladores. Realizamos desarrollo impulsado por pruebas.

♪ Hola, bienvenidos a esta charla. En ella, intentaremos responder una pregunta, que es, ¿hacer una simulación o no? Comencemos.

Mi nombre es Rita. Soy una apasionada de la tecnología. Vivo en Lisboa con mi hermosa familia. Mi hijo tiene casi tres años, así que es un poco travieso. Pero cuando no estoy ocupada con mi familia, probablemente estaré jugando, o estaré en SDC, el lugar donde trabajo. Trabajo con estas personas increíbles. Y actualmente, soy parte del Equipo Falcon, y las cosas están volviendo lentamente a la normalidad aquí en la oficina.

¿Dónde está la oficina? Es un centro de desarrollo de software aquí en Lisboa, y está justo en el centro de la ciudad. Se estableció en 2018. Fue el primer centro de desarrollo de software que Volkswagen abrió fuera de Alemania. Y hasta ahora, las cosas han ido muy, muy bien.

¿Qué hacemos aquí? Entonces, desarrollamos productos utilizando programación extrema. En pocas palabras, es un marco ágil que nos permite producir y entregar software de alta calidad a un ritmo muy rápido con una buena calidad de vida para nosotros, los desarrolladores, o para todo el equipo de desarrollo. Fue creado por Kent Beck en 1996. Así que es algo antiguo, pero los valores fundamentales en los que se basa, aún se mantienen. Comunicación, simplicidad, retroalimentación, valentía y respeto. Estos cinco pilares, también están grabados en el espíritu de SDC. Así que es una combinación perfecta.

¿Qué más puedo contarles sobre SDC? Entonces, trabajamos en equipos equilibrados, lo que significa que un equipo está compuesto por diseñadores, gerentes de producto y nosotros, los desarrolladores. Un equipo, permítanme también enfatizar esto, un equipo de producto, porque el equipo es más grande que solo los equipos de producto. Los diseñadores, ¿qué hacen? Entonces, mantienen contacto con los usuarios. Exploran, investigan, investigan posibles soluciones para los problemas de los usuarios. Los gerentes de producto traducirán estas necesidades de los usuarios en historias, y también mantendrán contacto con el negocio y verán si un producto es o no viable para ser desarrollado desde el punto de vista del negocio. Y nosotros, los desarrolladores, nos encargaremos de la viabilidad en términos de tecnología. Seremos los responsables de ver si algo se puede integrar con sistemas heredados, si algo se puede hacer utilizando tecnología de vanguardia. Si se trata de tecnología, ese es nuestro ámbito. En el medio de estos tres roles muy diferentes, es donde realmente sucede la magia y donde nacen buenos productos.

Entonces, ¿qué hacemos y cómo lo hacemos? Entonces, nosotros los desarrolladores, hacemos desarrollo impulsado por pruebas.

Read also

2. Beneficios de la Programación en Pareja

Short description:

En la programación en pareja, dos desarrolladores trabajan juntos en el mismo código simultáneamente. Esta práctica permite una revisión de código en tiempo real y una resolución inmediata de problemas, eliminando obstáculos y fomentando una colaboración eficiente.

Lo que significa que primero escribimos algunas pruebas, ejecutamos las pruebas, esperamos ver que las pruebas fallen. Pero si las pruebas pasan, las pruebas pasan. No, no deberían pasar. Tal vez hubo un error en la prueba, lo más probable. Entonces, para minimizar este tipo de situaciones, también participamos en la programación en pareja. Lo que significa que siempre tienes dos pares de ojos mirando el mismo código. Tenemos una computadora, dos teclados, dos ratones, dos pantallas, y así es como desarrollamos. No es necesario hacer revisiones de código porque el código se revisa en vivo a medida que avanzas. No te quedas bloqueado porque si te quedas bloqueado siempre habrá alguien contigo. Podrás expresar tus pensamientos, participar en una conversación de manera rápida y eficiente, podrás desbloquear el hilo de pensamiento que tienes. Así que funciona muy bien, tengo que admitirlo. Y no podría hacerlo de ninguna otra manera.

3. Books and Technological Solutions

Short description:

Voy a hablarles un poco sobre los libros. Los libros pueden llevarte a cualquier lugar y contarte historias que nunca podrás ver en la vida real. Tenemos una biblioteca en el SDC y es hora de llevarla al siglo XXI. Obtengamos una solución tecnológica para el bibliotecario y hagamos un par de bocetos para visualizar nuestros objetivos.

Entonces, yendo al núcleo de la presentación. Voy a hablarles un poco sobre los libros. Libros, ¿por qué? Bueno, los libros pueden llevarte a cualquier lugar. Pueden llevarte a lugares y contarte historias que nunca podrás ver en la vida real. Así que, también tenemos un poco de biblioteca aquí en el SDC. En realidad, son dos estanterías con libros, pero es una biblioteca. Así que podemos sacar libros de ella. Por lo tanto, tiene un sistema de gestión. ¿De qué está compuesto? Es un bloc de notas. Es un bloc de notas en el que escribimos nuestro nombre, el libro que tomamos y cuando lo devolvemos, lo tachamos. Así que, sí, un poco. Así que llevemos esto al siglo XXI, ¿de acuerdo? ¿Qué tal si cavamos en nuestras propias metodologías? En lugar de tener el bloc de notas, intentemos obtener una solución tecnológica para el bibliotecario. Así que hablemos con las personas que solicitan y desarrollan los libros y entregan los libros a las personas encargadas de mantener la biblioteca. Y hagamos un par de bocetos. Así es como visualmente intentaríamos lograr y cumplir. Fue un punto de partida.

4. MVP, Atomic Design, and Coding

Short description:

Entonces, obtengamos un MVP, un MVP adecuado. Necesitamos agregar libros, tomar prestados libros y devolver libros a la biblioteca. Utilizaremos el diseño atómico para organizar nuestros componentes de React, comenzando con átomos, moléculas, organismos y plantillas. Nos desviaremos de la metodología original al permitir que los organismos tengan plantillas. Comenzaremos a codificar con un lienzo en blanco y apuntaremos a lograr el desarrollo impulsado por pruebas al desarrollar la página para agregar un nuevo libro y seguir el flujo del usuario para agregar un libro a la biblioteca.

Entonces, obtengamos un MVP, un MVP adecuado.

Y de la investigación que hicimos, las cosas valiosas y las cosas que planteaban los problemas más relevantes para los usuarios eran poder agregar libros a la biblioteca, poder tomar prestados libros de la biblioteca y devolver libros de forma natural. Así que podemos agregar libros. Habrá una página para ellos. Sin embargo, dado que las personas tienden a ser un poco impacientes en el teclado, también tengamos alguna validación para asegurarnos de que todo esté correcto antes de enviarlo. Tengamos una página separada en la que podamos ver qué libros están disponibles en la biblioteca. Tengamos la posibilidad de tomar prestado un libro. Veamos qué libros hay en el mundo. Y tengamos la posibilidad de devolverlos a la biblioteca.

Estos son los bocetos que tenemos. Entonces, ¿qué sigue? ¿Cómo pasamos de estos bocetos a los componentes de React que desarrollaremos? Obviamente, desarrollaremos esto utilizando React. Entonces, ¿cómo pasamos de los bocetos a React y a nuestros componentes de React? Bueno, aquí entra en juego el diseño atómico. El diseño atómico es una forma de organizar tus componentes y tus elementos visuales como un sistema de diseño, muy probablemente. Y está estructurado de una manera muy sencilla y creciente o aumentando en complejidad. Tienes átomos, tienes moléculas, donde los átomos son los más simples, las moléculas son grupos de átomos unidos, los organismos son grupos de moléculas y átomos unidos, las plantillas serán el lienzo donde dices, ok, quiero tener esto aquí, esto allá, esto justo aquí abajo, y luego las páginas cuando instancias las plantillas. Así es como Brad Frost definió el diseño atómico en 2013. Sin embargo, hicimos algunos ajustes para nuestro propio uso. Así que nos quedamos con los átomos, sí, bien. A partir de nuestros diseños, los átomos también serán botones, algo muy simple. Las moléculas son grupos de átomos unidos o más de una etiqueta HTML juntas. Los organismos, como una tarjeta de libro o una plantilla para las páginas de las estanterías de libros, obtienes una plantilla y cuando instancias esa plantilla, cuando instancias la plantilla, terminas con las páginas de las estanterías de libros. Sin embargo, este es el momento en el que rompimos con la metodología original porque dijimos, ok, pero los organismos también pueden tener plantillas, lo cual es bastante genial, y como tal, tenemos nuestra desviación.

Ok, así que empecemos y comencemos a codificar. ¿Dónde? Podrás tener el repositorio que he utilizado para esta presentación disponible aquí, y comienza con algo muy simple, un lienzo en blanco con un encabezado, un contenido principal y luego el pie de página. ¿Qué queremos lograr con esto? Ok, estaremos haciendo desarrollo impulsado por pruebas. Desarrollaremos la página para agregar un nuevo libro y seguiremos el flujo del usuario para agregar un nuevo libro a la biblioteca. Todo bien. Empecemos.

5. Test-driven Development and UI Improvement

Short description:

El desarrollo impulsado por pruebas es crucial, y elegimos usar la biblioteca de pruebas de React para escribir pruebas que se asemejen a la forma en que se utiliza nuestro software. Comenzando con la página de nuevo libro, renderizamos los componentes y nos aseguramos de que el formulario tenga todos los elementos, incluido un botón de guardar deshabilitado. Inicialmente, las pruebas fallan debido a la falta de código de producción. Al corregir errores de ortografía y usar regex, nos aseguramos de que las pruebas pasen. Sin embargo, la interfaz de usuario aún necesita mejoras. Para abordar esto, escribimos pruebas adicionales y ajustamos la biblioteca de pruebas de React para simular y llamar a los componentes necesarios.

El desarrollo impulsado por pruebas, lo que significa que tendremos que escribir pruebas. Para escribir pruebas y tener al usuario en el centro de todo, hemos elegido usar la biblioteca de pruebas de React porque, como dijo Kenti Dodds de una manera muy elegante, cuanto más se parezcan tus pruebas a la forma en que se utiliza tu software, más confianza te brindarán. Y esto es algo con lo que nos identificamos y creemos que es una buena manera de seguir el desarrollo impulsado por pruebas.

Entonces, usaremos la biblioteca de pruebas de React para esto. Comencemos con la página de nuevo libro. ¿Qué tenemos aquí? Bueno, tenemos el formulario que contendrá el botón de guardar deshabilitado. Renderizaremos solo los componentes, o en este caso, la página, para tener lo mejor. Será el componente. El componente para tener el formulario para escribir un nuevo libro con todos los elementos, el encabezado, las diferentes secciones de entrada, los botones y, idealmente, tener el botón deshabilitado. Prueba sencilla.

Por supuesto, falla porque no hay nada, no hay nada. El componente está limpio. No hemos hecho ningún código de producción. Así que pongámonos manos a la obra. Cuando agregas algo de código de producción, vuelves a ejecutar las pruebas y tus pruebas siguen fallando. ¿Por qué fallan? Porque fuimos un poco permisivos con la prueba y la persona que implementó el código se retrasó un poco con la escritura. En lugar de tener 'author' correctamente escrito, fuimos algo creativos. ¿Por qué? Porque la prueba usaba regex, lo que nos permitió ser un poco flexibles con la definición de la cadena. Si lo corriges para la ortografía correcta, tu prueba pasa. Genial, ¿no? Pero somos desarrolladores front-end, así que siempre nos gusta ver cómo quedan las cosas.

Y así es como se ven las cosas, ¿no es genial? Entonces intentemos arreglarlo. ¿Cómo podemos arreglarlo? Podemos escribir otra prueba. Y en lugar de usar la biblioteca de pruebas de React tal como está destinada a usarse, ajustémosla un poco. ¿Recuerdas la molécula de entrada? Digamos que queremos llamarla. Simulémosla y digamos que queremos llamarla con los parámetros que esperamos ver. Hagamos lo mismo para los botones OK y Cancelar como molécula y sigamos adelante. Sí, lo sabemos. Obviamente no se llama. Así que llamémoslo.

6. Implementando Código, Navegación y Formic con YUP

Short description:

Cuando implementas el código, tu prueba pasa. Fácil. Misión cumplida. Y como bonificación, cuando ves cómo se ve, ta-da. Sí, esto es lo que queremos. Estamos avanzando. Además, cuando hacemos clic en el botón Cancelar, la investigación mostró que nos gustaría volver a la página de inicio. Para eso, usemos React Router DOM para poder navegar entre nuestras páginas. Te he mostrado dos formas diferentes de hacer esto para este componente simple, este formulario simple. Pros y contras. Cuando tienes formularios, mi consejo es que uses Formic en combinación con YUP para su validación. Está mejor probado, es increíble, debo decirlo, y es bastante fácil de familiarizarse con. Así que pongámonos manos a la obra con Formic y YUP.

Cuando implementas el código, tu prueba pasa. Fácil. Misión cumplida. Y como bonificación, cuando ves cómo se ve, ta-da. Sí, esto es lo que queremos. Estamos avanzando.

Además, cuando hacemos clic en el botón Cancelar, la investigación mostró que nos gustaría volver a la página de inicio. Para eso, usemos React Router DOM para poder navegar entre nuestras páginas. Así que esperemos que se haya llamado a history push. Realmente no se ha llamado, así que sí, sabemos que no se ha llamado, así que llamémoslo. Cuando lo llamamos, ambos sabemos que cuando lo llamamos en el callback para Uncancel, nuestra prueba se vuelve verde y todo está bien. Súper fácil. Muy fácil.

Te he mostrado dos formas diferentes de hacer esto para este componente simple, este formulario simple. Pros y contras. Cuando haces mock de los componentes, es fácil pasar de los diseños a los componentes que estás usando, lo cual es genial. No puedes hacer trampa con los componentes que usas, porque si quieres usar nuestro botón, usarás nuestro botón, no usarás la etiqueta HTML para el botón. Cuando renderizas tu componente, lo haces en un entorno controlado, por lo que puedes simular la navegación hacia atrás y hacia adelante o hacia donde quieras ir sin muchos problemas. Sin embargo, la desventaja es que tienes algunas representaciones superficiales, lo cual sé que va en contra de lo que representa la biblioteca de pruebas de React, pero nuevamente, pros y contras. Eventualmente, es posible que termines con algunas pruebas duplicadas aquí y allá. Lo cual está bien, y tienes un acoplamiento estrecho con los detalles de implementación. Dijimos que queremos usar React Router DOM. Eso es lo que vamos a usar para la navegación. Pros y contras. No hay una respuesta correcta o incorrecta aquí.

Continuando. Cuando tienes formularios, si esto es nuevo para ti, mi consejo es que uses Formic en combinación con YUP para su validación. Está mejor probado, es increíble, debo decirlo, y es bastante fácil de familiarizarse con. Así que pongámonos manos a la obra con Formic y YUP.

7. Formic Testing and Service Documentation

Short description:

En las pruebas, simulamos Formic y esperamos que se haya llamado. Sin embargo, decidimos usar Formic tal cual, sin simularlo. Nos enfocamos en la parte en la que vamos a enviar y probar el servicio para agregar un libro, que llama al endpoint slash-API slash books con los datos proporcionados.

En las pruebas, ¿cómo te aseguras de que estás usando Formic? Lo simulamos y esperamos que se haya llamado. Fácil. No se llama, sí, obviamente no se llama. Por supuesto que no, porque acabamos de introducirlo. Lo llamamos así, y la prueba pasa. Pero si solo fuera tan simple. Tal vez deberíamos leer un poco más sobre Formic. Entonces, en Formic obtienes el ejemplo básico, y a partir de ahí puedes ver fácilmente que necesitamos proporcionar más información a Formic, como los valores iniciales y lo que queremos hacer cuando enviemos el formulario, y hablando de enviar, eso es lo que queremos hacer. Pero el botón está desactivado. Queremos hacer clic en él. ¿Cómo lo hacemos, cómo habilitamos los botones? Bueno, investigando más, descubrimos que existe esta propiedad válida que va junto con dirty, y luego tendremos que ver cómo podemos usarla en los forms, pero espera. ¿Qué queremos hacer? ¿Queremos pasar tiempo aprendiendo a simular esta biblioteca de terceros? ¿O queremos pasar tiempo usándola? La respuesta es bastante simple, lo que significa que hablemos de ello. Necesitamos decidir qué queremos hacer. Y como equipo, hemos decidido que queremos usar Formic tal cual, sin simularlo. Vamos a por ello de manera justa y directa, y así lo hacemos. Entonces, en lugar de tener todos los forms, nos enfocamos en la parte en la que vamos a enviar. Entonces, cuando vayamos a enviar, tendremos un servicio para agregar el libro, y esperaremos que se haya llamado, pero obviamente no se llama. Entonces, si vamos al formulario que ya está completado con más cosas de Formic, llamamos a add book. Y tenemos una prueba verde que pasa. Así de fácil. No hay problema. Pero, ¿qué es esto? ¿Qué es este servicio? Este servicio está documentado a través de las pruebas. Así que es otra ventaja del desarrollo guiado por pruebas. Las pruebas son tu documentación. Serán tu referencia para las cosas y la información que necesitas extraer. Entonces, el servicio para agregar un libro es simplemente un servicio que llama al endpoint slash-API slash books con los datos proporcionados. Solo eso, no mucho. Ahí lo tienes. Llama al fetch que proviene de un servicio de fetch que a su vez es algo que tenemos en BookKeeper que encapsula la API de fetch. Así que hay un par de capas aquí.

8. Layers and Abstraction in Software Development

Short description:

Pero Trek nos dijo que las capas son buenas. Las capas son geniales. ¿Por qué tenemos capas? Cuando tienes capas en este caso, obtienes mucha abstracción. Puedes ignorar las bibliotecas o APIs específicas que estás utilizando y centrarte en el servicio de fetch. Simular el servicio facilita las pruebas, pero es posible que necesites investigar para comprender los servicios y sus ubicaciones.

Pero Trek nos dijo que las capas son buenas. Las capas son geniales. ¿Por qué tenemos capas? Procon. Cuando tienes capas en este caso, obtienes mucha abstracción aquí. Por lo tanto, puedes ignorar si estás utilizando la API de fetch, axios, node fetch, una biblioteca que hayas creado tú mismo. Realmente no nos importa. Está oculto, escondido debajo del servicio de fetch que se utiliza en toda la aplicación. Y estás bien con eso. Y también estás bien simulándolo. Entonces, en lugar de intentar simular todos los lugares donde utilizas la biblioteca, simplemente puedes simular la llamada al servicio. Esto facilita mucho las pruebas. Sin embargo, terminarás investigando que necesitarás hacer si quieres entender cuáles son los servicios y dónde se encuentran.

9. Testing User Journey and Accessibility

Short description:

Ahora podemos centrarnos en todo el recorrido de Bob utilizando la aplicación BookKeeper. Renderiza toda la aplicación sin simular, excepto Global Fetch. Al centrarte en el recorrido del usuario, puedes probar los componentes de React y la navegación. Este enfoque te permite simular una prueba de extremo a extremo sin necesidad de un backend en ejecución. También puedes priorizar la accesibilidad y probar la aplicación desde la perspectiva del usuario.

Para resumir, ahora podemos centrarnos en todo el recorrido de Bob. Bob quiere usar BookKeeper. Quiere usar BookKeeper, que es el nombre de nuestra aplicación, si no te has dado cuenta. Renderiza toda la aplicación, todo. Sin simulación alguna, excepto Global Fetch, que es la parte más importante de tu aplicación, cuando simulas esta parte más importante. Puedes enfocarte mucho, mucho en el recorrido del usuario. Recórrelo con fluidez a través de las bibliotecas de pruebas de React, y por supuesto, la prueba fallará debido al desarrollo basado en pruebas. Recuerda, comenzamos con un lienzo en blanco en BookKeeper. Así que agreguemos cosas. Agreguemos la navegación con React RouterDOM, cambiando entre la página de inicio, la página para agregar nuevos libros, y eventualmente la página para tomar prestados libros. Las cosas pasarían. Pros y contras en este enfoque. Probablemente puedas decir que, sí, eso se parece mucho a una prueba de extremo a extremo, y podríamos hacer esto usando Cypress en lugar de la biblioteca de pruebas de React en el desarrollo front-end. Sí, podrías. Pero si lo haces así, en realidad puedes enfocarte en el recorrido del usuario, algo que también podrías hacer en la prueba de extremo a extremo. Justo. Pero en este caso, no tienes que preocuparte por tener un backend en funcionamiento. Solo necesitas tener en cuenta cuáles son los puntos finales, y cuál es la interfaz que tu backend te proporciona. Luego simplemente puedes simular las respuestas que deseas tener. También puedes centrarte en la accesibilidad. Puedes probar toda tu aplicación a través de los ojos del usuario, cómo percibe tu aplicación, y eso es algo realmente valioso. Los contras de esta parte... Realmente no encontré ninguno, así que, lo siento. Para resumir, comenzamos haciendo la pregunta, ¿debemos simular o no? Me gustaría poder decirte que tengo una respuesta, pero la realidad honesta es que no lo sé. Hay casos en los que es mejor simular, hay casos en los que es mejor usar el verdadero. Depende de ti encontrar tu equilibrio, ver qué funciona mejor para ti y para tu equipo, y luego hacer lo que te parezca correcto. No hay una respuesta correcta o incorrecta, solo encuentra tus equilibrios, seguro. Hay casos en los que es más beneficioso simular, hay casos en los que es más beneficioso no simular, pero eso surge de la experiencia, y es algo que solo tú puedes descubrir. Así que eso sería todo. Muchas gracias por escuchar. Si tienes preguntas, adelante. ¡Adiós!

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

No resuelvas problemas, elimínalos
React Advanced 2021React Advanced 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Kent C. Dodds discusses the concept of problem elimination rather than just problem-solving. He introduces the idea of a problem tree and the importance of avoiding creating solutions prematurely. Kent uses examples like Tesla's electric engine and Remix framework to illustrate the benefits of problem elimination. He emphasizes the value of trade-offs and taking the easier path, as well as the need to constantly re-evaluate and change approaches to eliminate problems.
Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
Solicitudes de Red con Cypress
TestJS Summit 2021TestJS Summit 2021
33 min
Solicitudes de Red con Cypress
Top Content
Cecilia Martinez, a technical account manager at Cypress, discusses network requests in Cypress and demonstrates commands like cydot request and SCI.INTERCEPT. She also explains dynamic matching and aliasing, network stubbing, and the pros and cons of using real server responses versus stubbing. The talk covers logging request responses, testing front-end and backend API, handling list length and DOM traversal, lazy loading, and provides resources for beginners to learn Cypress.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
Gestión del Estado de React: 10 Años de Lecciones Aprendidas
React Day Berlin 2023React Day Berlin 2023
16 min
Gestión del Estado de React: 10 Años de Lecciones Aprendidas
Top Content
This Talk focuses on effective React state management and lessons learned over the past 10 years. Key points include separating related state, utilizing UseReducer for protecting state and updating multiple pieces of state simultaneously, avoiding unnecessary state syncing with useEffect, using abstractions like React Query or SWR for fetching data, simplifying state management with custom hooks, and leveraging refs and third-party libraries for managing state. Additional resources and services are also provided for further learning and support.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Consejos sobre React Hooks que solo los profesionales conocen
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
Consejos sobre React Hooks que solo los profesionales conocen
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.
React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured Workshop
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Domina los Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Domina los Patrones de JavaScript
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
Workshop
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass