{"id":19636,"date":"2026-10-03T07:12:00","date_gmt":"2026-10-03T05:12:00","guid":{"rendered":"https:\/\/martagonzalez.dev\/wp\/blog\/\/"},"modified":"2026-06-15T15:37:14","modified_gmt":"2026-06-15T13:37:14","slug":"como-escribir-tu-primer-test-unitario-en-javascript","status":"publish","type":"post","link":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/","title":{"rendered":"C\u00f3mo escribir tu primer test unitario en JavaScript"},"content":{"rendered":"<div class=\"kksr-ratings kksr-native\" data-payload=\"{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;19636&quot;,&quot;count&quot;:&quot;0&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;\u00bfTe ha resultado \u00fatil este art\u00edculo?&quot;,&quot;legend&quot;:&quot;{score}\/{best} \u00b7 {count} {votes}&quot;,&quot;_legend&quot;:&quot;{score}\/{best} \u00b7 {count} {votes}&quot;,&quot;score&quot;:&quot;0&quot;,&quot;size&quot;:&quot;24&quot;,&quot;legendonly&quot;:&quot;false&quot;,&quot;starsonly&quot;:&quot;false&quot;}\"><div class=\"kksr-stars\"><\/div><div class=\"kksr-legend\"><\/div><\/div>\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"dcd5e4\" data-has-transparency=\"false\" style=\"--dominant-color: #dcd5e4;\" decoding=\"async\" width=\"1024\" height=\"683\" sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript-1024x683.avif\" alt=\"\" class=\"wp-image-19657 not-transparent\" srcset=\"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript-1024x683.avif 1024w, https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript-300x200.avif 300w, https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript-768x512.avif 768w, https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript.avif 1536w\" fetchpriority=\"high\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Aprender a escribir un test unitario en JavaScript puede parecer un paso muy t\u00e9cnico al principio, especialmente si vienes de centrarte en crear interfaces, resolver funcionalidades o entregar cambios r\u00e1pido. Sin embargo, cuanto antes incorporas el testing a tu forma de trabajar, antes empiezas a notar una diferencia importante: desarrollas con m\u00e1s seguridad, detectas errores antes y entiendes mejor c\u00f3mo deber\u00eda comportarse tu propio c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un test unitario no es una garant\u00eda absoluta de que una aplicaci\u00f3n nunca fallar\u00e1, pero s\u00ed es una herramienta muy \u00fatil para comprobar que una parte peque\u00f1a y concreta del c\u00f3digo hace exactamente lo que esperas. En lugar de abrir el navegador, probar manualmente varios casos y confiar en que todo sigue funcionando, puedes escribir una prueba automatizada que verifique ese comportamiento por ti.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este art\u00edculo vamos a ver c\u00f3mo escribir tu primer test unitario en JavaScript desde cero, con una explicaci\u00f3n clara, ejemplos sencillos y buenas pr\u00e1cticas para que no solo copies c\u00f3digo, sino que entiendas qu\u00e9 est\u00e1s haciendo. Si todav\u00eda est\u00e1s construyendo una base sobre testing, tambi\u00e9n puede ayudarte leer esta gu\u00eda sobre <a href=\"https:\/\/chatgpt.com\/blog\/testing-unitario-que-es-cuando-usarlo-y-ejemplos-practicos\/\">qu\u00e9 es el testing unitario y cu\u00e1ndo usarlo<\/a>, donde se explica el concepto desde una perspectiva m\u00e1s general.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-que-es-un-test-unitario-en-javascript\" class=\"wp-block-heading\">Qu\u00e9 es un test unitario en JavaScript<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un test unitario es una prueba automatizada que verifica el comportamiento de una unidad peque\u00f1a de c\u00f3digo. Esa unidad puede ser una funci\u00f3n, un m\u00e9todo, una utilidad, una transformaci\u00f3n de datos o una pieza l\u00f3gica concreta de una aplicaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, si tienes una funci\u00f3n que suma dos n\u00fameros, un test unitario puede comprobar que al pasarle <code>2<\/code> y <code>3<\/code>, el resultado sea <code>5<\/code>. Parece algo demasiado simple, pero esa sencillez es precisamente una de las claves del testing unitario: comprobar piezas peque\u00f1as de forma aislada.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function sumar(a, b) {\n  return a + b;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Un test unitario para esa funci\u00f3n podr\u00eda expresar algo como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>esperamos que sumar(2, 3) devuelva 5\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La ventaja est\u00e1 en que esta comprobaci\u00f3n se puede ejecutar todas las veces que quieras. Si m\u00e1s adelante alguien modifica la funci\u00f3n y rompe su comportamiento, el test fallar\u00e1 y te avisar\u00e1.<\/p>\n\n\n\n<h3 id=\"h-diferencia-entre-probar-manualmente-y-escribir-tests\" class=\"wp-block-heading\">Diferencia entre probar manualmente y escribir tests<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando pruebas manualmente una funcionalidad, normalmente sigues una serie de pasos: abres la aplicaci\u00f3n, haces clic, introduces datos y observas el resultado. Este proceso es necesario en muchos casos, pero tambi\u00e9n tiene l\u00edmites. Puedes olvidarte de revisar un caso, repetir pruebas consume tiempo y es f\u00e1cil asumir que algo funciona solo porque funcion\u00f3 una vez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En cambio, las pruebas unitarias JavaScript permiten automatizar comprobaciones peque\u00f1as y repetibles. No sustituyen todo el trabajo de revisi\u00f3n, pero s\u00ed reducen la dependencia de la memoria y de la intuici\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Probar manualmente responde a la pregunta: <em>\u201c\u00bfparece que esto funciona ahora?\u201d<\/em>.<br>Un test unitario responde a la pregunta: <em>\u201c\u00bfesta parte concreta del c\u00f3digo sigue comport\u00e1ndose como hab\u00edamos definido?\u201d<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si quieres ampliar la visi\u00f3n general, puedes complementar esta lectura con el art\u00edculo sobre <a href=\"https:\/\/chatgpt.com\/blog\/tipos-de-testing-en-aplicaciones-web-unitario-integracion-end-to-end-y-mas\/\">tipos de testing en aplicaciones web<\/a>, donde se explican las diferencias entre pruebas unitarias, de integraci\u00f3n, end to end y otros enfoques.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-por-que-deberias-aprender-testing-javascript-desde-el-principio\" class=\"wp-block-heading\">Por qu\u00e9 deber\u00edas aprender testing JavaScript desde el principio<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Muchas personas empiezan a interesarse por el testing JavaScript cuando el proyecto ya ha crecido, cuando hay miedo a tocar ciertas partes del c\u00f3digo o cuando una correcci\u00f3n rompe otra funcionalidad sin querer. Aunque nunca es tarde para empezar, aprender testing desde el principio tiene varias ventajas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La primera es que te ayuda a escribir c\u00f3digo m\u00e1s claro. Para poder testear una funci\u00f3n, esa funci\u00f3n debe tener una responsabilidad concreta. Si una funci\u00f3n hace demasiadas cosas, tiene dependencias ocultas o mezcla l\u00f3gica con efectos secundarios, escribir un test se vuelve complicado. Por eso, el testing tambi\u00e9n act\u00faa como una se\u00f1al de dise\u00f1o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La segunda ventaja es que te da confianza al refactorizar. Refactorizar significa mejorar la estructura interna del c\u00f3digo sin cambiar su comportamiento externo. Si tienes tests que verifican ese comportamiento, puedes reorganizar el c\u00f3digo con menos miedo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La tercera ventaja es que mejora la comunicaci\u00f3n dentro de un equipo. Un test bien escrito funciona casi como documentaci\u00f3n ejecutable. Explica qu\u00e9 se espera de una funci\u00f3n y qu\u00e9 casos se consideran importantes.<\/p>\n\n\n\n<h3 id=\"h-cuando-tiene-sentido-escribir-un-test-unitario\" class=\"wp-block-heading\">Cu\u00e1ndo tiene sentido escribir un test unitario<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No hace falta testear absolutamente todo. Un error com\u00fan al empezar es pensar que cualquier l\u00ednea de c\u00f3digo debe tener una prueba asociada. En la pr\u00e1ctica, conviene priorizar aquellas partes donde un fallo puede tener impacto real.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tiene mucho sentido escribir tests unitarios para funciones que transforman datos, validaciones de formularios, c\u00e1lculos de precios, utilidades reutilizables, reglas de negocio o casos l\u00edmite que podr\u00edan romperse con facilidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, si tienes una funci\u00f3n que calcula el precio final de un producto con descuento, ah\u00ed un test unitario puede ahorrarte muchos problemas. Si el c\u00e1lculo falla, el impacto puede ser importante.<\/p>\n\n\n\n<h4 id=\"h-que-no-suele-ser-ideal-para-un-primer-test-unitario\" class=\"wp-block-heading\">Qu\u00e9 no suele ser ideal para un primer test unitario<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Para empezar, no conviene elegir una parte demasiado compleja de la aplicaci\u00f3n. Si tu primer test intenta cubrir una pantalla completa, una llamada a una API, una interacci\u00f3n con el DOM y varios estados al mismo tiempo, es probable que termines frustrada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para tu primer test unitario JavaScript, lo mejor es elegir una funci\u00f3n pura: una funci\u00f3n que recibe unos datos, devuelve un resultado y no depende de elementos externos. Este enfoque se relaciona directamente con la forma de trabajar explicada en la gu\u00eda sobre <a href=\"https:\/\/chatgpt.com\/blog\/como-testear-funciones-puras-en-javascript\/\">c\u00f3mo testear funciones puras en JavaScript<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-preparar-el-entorno-para-escribir-tu-primer-test\" class=\"wp-block-heading\">Preparar el entorno para escribir tu primer test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para escribir tests en JavaScript necesitas un entorno de ejecuci\u00f3n y una herramienta de testing. En este art\u00edculo vamos a usar Jest, porque es una opci\u00f3n muy conocida, tiene una sintaxis accesible y permite empezar con pocos pasos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podr\u00edas usar Vitest, especialmente si trabajas con Vite, React o proyectos frontend modernos. La l\u00f3gica de los primeros tests es muy parecida: defines un caso, ejecutas una funci\u00f3n y compruebas el resultado esperado. Si tu proyecto ya usa Vite, te puede interesar esta gu\u00eda espec\u00edfica sobre <a href=\"https:\/\/chatgpt.com\/blog\/vitest-para-proyectos-modernos-con-vite-guia-practica\/\">Vitest para proyectos modernos con Vite<\/a>.<\/p>\n\n\n\n<h3 id=\"h-crear-un-proyecto-basico\" class=\"wp-block-heading\">Crear un proyecto b\u00e1sico<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Primero, crea una carpeta para el ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir primer-test-js\ncd primer-test-js\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s inicializa un proyecto con npm:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm init -y\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto generar\u00e1 un archivo <code>package.json<\/code>, donde se guardar\u00e1 la configuraci\u00f3n b\u00e1sica del proyecto y los scripts que podr\u00e1s ejecutar desde la terminal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora instala Jest como dependencia de desarrollo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install --save-dev jest\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una dependencia de desarrollo es una herramienta que necesitas para trabajar en el proyecto, pero que no forma parte necesariamente del c\u00f3digo final que se ejecutar\u00e1 en producci\u00f3n.<\/p>\n\n\n\n<h3 id=\"h-configurar-el-script-de-test\" class=\"wp-block-heading\">Configurar el script de test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Abre el archivo <code>package.json<\/code> y busca la secci\u00f3n <code>\"scripts\"<\/code>. Puedes modificarla as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"scripts\": {\n    \"test\": \"jest\"\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con esto podr\u00e1s ejecutar los tests usando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm test\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este comando le dir\u00e1 a Jest que busque archivos de prueba en el proyecto y los ejecute.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-crear-una-funcion-sencilla-para-testear\" class=\"wp-block-heading\">Crear una funci\u00f3n sencilla para testear<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a empezar con una funci\u00f3n muy simple. Crea un archivo llamado <code>sumar.js<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function sumar(a, b) {\n  return a + b;\n}\n\nmodule.exports = sumar;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n recibe dos valores y devuelve la suma. Adem\u00e1s, usamos <code>module.exports<\/code> para poder importarla desde el archivo de test.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque el ejemplo sea b\u00e1sico, tiene algo importante: la funci\u00f3n es predecible. Si le pasamos <code>2<\/code> y <code>3<\/code>, esperamos <code>5<\/code>. Si le pasamos <code>-1<\/code> y <code>1<\/code>, esperamos <code>0<\/code>. Esta claridad facilita mucho el aprendizaje.<\/p>\n\n\n\n<h3 id=\"h-que-significa-testear-una-funcion\" class=\"wp-block-heading\">Qu\u00e9 significa testear una funci\u00f3n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Testear una funci\u00f3n no consiste solo en comprobar que \u201cfunciona\u201d. Eso es demasiado general. Un buen test define un escenario concreto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cuando sumo <code>2 + 3<\/code>, el resultado debe ser <code>5<\/code>.<\/li>\n\n\n\n<li>Cuando sumo <code>-1 + 1<\/code>, el resultado debe ser <code>0<\/code>.<\/li>\n\n\n\n<li>Cuando sumo <code>0 + 0<\/code>, el resultado debe ser <code>0<\/code>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Cada caso expresa una expectativa. Esa expectativa es el coraz\u00f3n de cualquier prueba.<\/p>\n\n\n\n<h2 id=\"h-escribir-tu-primer-test-unitario-en-javascript\" class=\"wp-block-heading\">Escribir tu primer test unitario en JavaScript<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora crea un archivo llamado <code>sumar.test.js<\/code>. Jest reconoce por defecto archivos que contienen <code>.test.js<\/code> o <code>.spec.js<\/code>, as\u00ed que este nombre es una convenci\u00f3n habitual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dentro del archivo escribe:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const sumar = require('.\/sumar');\n\ntest('suma dos n\u00fameros positivos correctamente', () =&gt; {\n  expect(sumar(2, 3)).toBe(5);\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este es tu primer test unitario en JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a descomponerlo.<\/p>\n\n\n\n<h3 id=\"h-la-funcion-test\" class=\"wp-block-heading\">La funci\u00f3n test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La funci\u00f3n <code>test<\/code> define un caso de prueba. Recibe dos argumentos principales:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test('descripci\u00f3n del comportamiento', () =&gt; {\n  \/\/ comprobaci\u00f3n\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El primer argumento es una descripci\u00f3n. Conviene que sea clara y espec\u00edfica. No es lo mismo escribir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test('funciona', () =&gt; {})\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">que escribir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test('suma dos n\u00fameros positivos correctamente', () =&gt; {})\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La segunda opci\u00f3n comunica mucho mejor qu\u00e9 comportamiento se est\u00e1 verificando.<\/p>\n\n\n\n<h3 id=\"h-la-funcion-expect\" class=\"wp-block-heading\">La funci\u00f3n expect<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La funci\u00f3n <code>expect<\/code> sirve para expresar el resultado que esperas obtener. En este caso:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>expect(sumar(2, 3)).toBe(5);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto significa: \u201cespero que el resultado de ejecutar <code>sumar(2, 3)<\/code> sea <code>5<\/code>\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>toBe<\/code> es un matcher, es decir, una funci\u00f3n que compara el resultado recibido con el valor esperado. Para valores primitivos como n\u00fameros, strings o booleanos, <code>toBe<\/code> suele ser suficiente.<\/p>\n\n\n\n<h3 id=\"h-ejecutar-el-test\" class=\"wp-block-heading\">Ejecutar el test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora ejecuta en la terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm test\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si todo est\u00e1 bien, Jest mostrar\u00e1 un mensaje indicando que el test ha pasado. Eso significa que la funci\u00f3n se comporta como esperabas en ese caso concreto.<\/p>\n\n\n\n<h2 id=\"h-anadir-mas-casos-de-prueba\" class=\"wp-block-heading\">A\u00f1adir m\u00e1s casos de prueba<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un solo test est\u00e1 bien para empezar, pero normalmente una funci\u00f3n debe comprobarse con varios escenarios. Vamos a ampliar el archivo <code>sumar.test.js<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const sumar = require('.\/sumar');\n\ntest('suma dos n\u00fameros positivos correctamente', () =&gt; {\n  expect(sumar(2, 3)).toBe(5);\n});\n\ntest('suma un n\u00famero negativo y uno positivo correctamente', () =&gt; {\n  expect(sumar(-1, 1)).toBe(0);\n});\n\ntest('suma dos ceros correctamente', () =&gt; {\n  expect(sumar(0, 0)).toBe(0);\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora tienes tres pruebas. Cada una cubre un caso diferente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto es importante porque una funci\u00f3n puede funcionar en un caso y fallar en otro. Por eso, escribir pruebas unitarias JavaScript no va solo de confirmar el caso feliz, sino tambi\u00e9n de pensar en l\u00edmites, variantes y posibles errores.<\/p>\n\n\n\n<h3 id=\"h-el-patron-arrange-act-assert\" class=\"wp-block-heading\">El patr\u00f3n Arrange, Act, Assert<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una forma muy \u00fatil de estructurar tests es el patr\u00f3n <strong>Arrange, Act, Assert<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Arrange:<\/strong> preparas los datos necesarios.<\/li>\n\n\n\n<li><strong>Act:<\/strong> ejecutas la funci\u00f3n que quieres probar.<\/li>\n\n\n\n<li><strong>Assert:<\/strong> compruebas el resultado esperado.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">El test anterior podr\u00eda escribirse as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test('suma dos n\u00fameros positivos correctamente', () =&gt; {\n  \/\/ Arrange\n  const a = 2;\n  const b = 3;\n\n  \/\/ Act\n  const resultado = sumar(a, b);\n\n  \/\/ Assert\n  expect(resultado).toBe(5);\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para una funci\u00f3n tan simple puede parecer demasiado largo, pero este patr\u00f3n se vuelve muy \u00fatil cuando los tests crecen. Ayuda a mantener el orden y facilita la lectura.<\/p>\n\n\n\n<h4 id=\"h-cuando-usar-una-version-mas-compacta\" class=\"wp-block-heading\">Cu\u00e1ndo usar una versi\u00f3n m\u00e1s compacta<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Si el test es evidente, una versi\u00f3n compacta est\u00e1 bien:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>expect(sumar(2, 3)).toBe(5);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pero si hay varios datos, condiciones o pasos intermedios, separar preparaci\u00f3n, acci\u00f3n y comprobaci\u00f3n mejora mucho la mantenibilidad.<\/p>\n\n\n\n<h2 id=\"h-probar-una-funcion-un-poco-mas-realista\" class=\"wp-block-heading\">Probar una funci\u00f3n un poco m\u00e1s realista<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La suma es \u00fatil para entender la mec\u00e1nica, pero vamos a ver un ejemplo algo m\u00e1s cercano a un proyecto real. Imagina que tienes una funci\u00f3n para aplicar un descuento a un precio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crea un archivo <code>calcularPrecioFinal.js<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function calcularPrecioFinal(precio, descuento) {\n  if (descuento &lt; 0 || descuento &gt; 100) {\n    throw new Error('El descuento debe estar entre 0 y 100');\n  }\n\n  return precio - precio * (descuento \/ 100);\n}\n\nmodule.exports = calcularPrecioFinal;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esta funci\u00f3n recibe un precio y un porcentaje de descuento. Si el descuento no est\u00e1 entre <code>0<\/code> y <code>100<\/code>, lanza un error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora crea el archivo <code>calcularPrecioFinal.test.js<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const calcularPrecioFinal = require('.\/calcularPrecioFinal');\n\ntest('aplica un descuento del 20% correctamente', () =&gt; {\n  expect(calcularPrecioFinal(100, 20)).toBe(80);\n});\n\ntest('devuelve el mismo precio cuando el descuento es 0', () =&gt; {\n  expect(calcularPrecioFinal(100, 0)).toBe(100);\n});\n\ntest('devuelve 0 cuando el descuento es 100', () =&gt; {\n  expect(calcularPrecioFinal(100, 100)).toBe(0);\n});\n\ntest('lanza un error si el descuento es negativo', () =&gt; {\n  expect(() =&gt; calcularPrecioFinal(100, -10)).toThrow('El descuento debe estar entre 0 y 100');\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejemplo ya muestra algo m\u00e1s interesante. No solo comprobamos resultados correctos, sino tambi\u00e9n un caso de error. Eso es esencial en el testing: no basta con probar lo que deber\u00eda salir bien; tambi\u00e9n hay que comprobar c\u00f3mo responde el c\u00f3digo cuando recibe valores inv\u00e1lidos.<\/p>\n\n\n\n<h3 id=\"h-por-que-conviene-probar-los-casos-limite\" class=\"wp-block-heading\">Por qu\u00e9 conviene probar los casos l\u00edmite<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los casos l\u00edmite son escenarios que se encuentran en los extremos de una regla. En el ejemplo anterior, los l\u00edmites son <code>0<\/code> y <code>100<\/code>, porque son los valores m\u00ednimo y m\u00e1ximo permitidos para el descuento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Probar estos casos ayuda a detectar errores t\u00edpicos como permitir valores que deber\u00edan rechazarse, rechazar valores v\u00e1lidos, calcular mal porcentajes o no controlar entradas inesperadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En aplicaciones reales, estos detalles pueden afectar a formularios, precios, permisos, fechas, filtros o validaciones importantes. Si est\u00e1s planificando tests para una aplicaci\u00f3n completa, puede resultarte \u00fatil el art\u00edculo sobre <a href=\"https:\/\/chatgpt.com\/blog\/como-crear-una-estrategia-de-testing-para-una-aplicacion-web\/\">c\u00f3mo crear una estrategia de testing para una aplicaci\u00f3n web<\/a>.<\/p>\n\n\n\n<h2 id=\"h-buenas-practicas-para-escribir-tu-primer-test-unitario\" class=\"wp-block-heading\">Buenas pr\u00e1cticas para escribir tu primer test unitario<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Escribir tests no consiste en acumular archivos de prueba sin criterio. Un test \u00fatil debe ser claro, estable y f\u00e1cil de mantener. De lo contrario, puede convertirse en una carga.<\/p>\n\n\n\n<h3 id=\"h-escribe-tests-con-nombres-descriptivos\" class=\"wp-block-heading\">Escribe tests con nombres descriptivos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El nombre del test debe explicar el comportamiento esperado. Una buena descripci\u00f3n permite entender qu\u00e9 ha fallado sin tener que leer todo el c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mejor esto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test('lanza un error si el descuento es mayor que 100', () =&gt; {\n  expect(() =&gt; calcularPrecioFinal(100, 120)).toThrow();\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Que esto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test('error descuento', () =&gt; {\n  expect(() =&gt; calcularPrecioFinal(100, 120)).toThrow();\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El primer test comunica intenci\u00f3n. El segundo obliga a interpretar.<\/p>\n\n\n\n<h3 id=\"h-prueba-comportamientos-no-implementaciones\" class=\"wp-block-heading\">Prueba comportamientos, no implementaciones<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un error frecuente es escribir tests demasiado pegados a c\u00f3mo est\u00e1 construido el c\u00f3digo internamente. Lo importante es comprobar qu\u00e9 hace la funci\u00f3n, no necesariamente c\u00f3mo lo hace.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si una funci\u00f3n devuelve el precio final correcto, el test no deber\u00eda depender de si internamente usas una variable llamada <code>total<\/code>, una operaci\u00f3n en una l\u00ednea o varios pasos separados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto permite refactorizar sin romper tests innecesariamente.<\/p>\n\n\n\n<h3 id=\"h-manten-cada-test-enfocado\" class=\"wp-block-heading\">Mant\u00e9n cada test enfocado<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un test deber\u00eda comprobar una idea principal. Si en un mismo test verificas demasiadas cosas, cuando falle ser\u00e1 m\u00e1s dif\u00edcil saber cu\u00e1l es el problema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, en lugar de escribir un \u00fanico test enorme para todos los descuentos posibles, suele ser mejor crear varios tests peque\u00f1os con nombres claros.<\/p>\n\n\n\n<h3 id=\"h-evita-tests-fragiles\" class=\"wp-block-heading\">Evita tests fr\u00e1giles<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un test fr\u00e1gil es aquel que falla con facilidad aunque el comportamiento importante no se haya roto. Esto suele ocurrir cuando el test depende de detalles irrelevantes, del orden exacto de datos que no importa o de configuraciones externas innecesarias.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para evitarlo, c\u00e9ntrate en la salida observable de la funci\u00f3n y reduce las dependencias externas. Este punto conecta con muchas de las recomendaciones explicadas en <a href=\"https:\/\/chatgpt.com\/blog\/buenas-practicas-para-escribir-tests-mantenibles\/\">buenas pr\u00e1cticas para escribir tests mantenibles<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-errores-comunes-al-empezar-con-pruebas-unitarias-javascript\" class=\"wp-block-heading\">Errores comunes al empezar con pruebas unitarias JavaScript<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando empiezas con pruebas unitarias JavaScript, es normal cometer algunos errores. Lo importante es identificarlos pronto para no convertirlos en h\u00e1bitos.<\/p>\n\n\n\n<h3 id=\"h-testear-demasiado-tarde\" class=\"wp-block-heading\">Testear demasiado tarde<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si esperas a que todo el proyecto est\u00e9 terminado para escribir tests, probablemente te resulte m\u00e1s dif\u00edcil. El c\u00f3digo puede estar muy acoplado, las funciones pueden tener demasiadas responsabilidades y quiz\u00e1 ni siquiera tengas claro qu\u00e9 comportamiento esperas en algunos casos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No hace falta aplicar TDD desde el primer d\u00eda, pero s\u00ed conviene escribir tests mientras desarrollas o justo despu\u00e9s de terminar una pieza l\u00f3gica.<\/p>\n\n\n\n<h3 id=\"h-confundir-test-unitario-con-test-de-integracion\" class=\"wp-block-heading\">Confundir test unitario con test de integraci\u00f3n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un test unitario prueba una unidad peque\u00f1a de c\u00f3digo de forma aislada. Un test de integraci\u00f3n comprueba c\u00f3mo colaboran varias partes entre s\u00ed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, probar una funci\u00f3n que calcula un descuento es unitario. Probar que un formulario recoge datos, los valida, llama a una API y actualiza la interfaz se acerca m\u00e1s a una prueba de integraci\u00f3n o incluso a una prueba end to end, seg\u00fan el caso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ambos tipos de test son \u00fatiles, pero tienen objetivos diferentes.<\/p>\n\n\n\n<h3 id=\"h-escribir-tests-que-no-aportan-valor\" class=\"wp-block-heading\">Escribir tests que no aportan valor<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No todos los tests son igual de \u00fatiles. Por ejemplo, testear que una funci\u00f3n mockeada devuelve exactamente lo que t\u00fa mismo le has dicho que devuelva no aporta demasiado. Tampoco suele tener sentido testear detalles triviales que no contienen l\u00f3gica real.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un buen criterio es preguntarte: <strong>si este test falla, \u00bfme estar\u00eda avisando de un problema importante?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si la respuesta es no, quiz\u00e1 ese test no sea prioritario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para profundizar en estos fallos habituales, puedes revisar tambi\u00e9n el art\u00edculo sobre <a href=\"https:\/\/chatgpt.com\/blog\/errores-comunes-al-empezar-con-testing-en-desarrollo-frontend\/\">errores comunes al empezar con testing en desarrollo frontend<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 id=\"h-como-saber-si-tu-primer-test-esta-bien-escrito\" class=\"wp-block-heading\">C\u00f3mo saber si tu primer test est\u00e1 bien escrito<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un buen primer test no tiene que ser perfecto. Tiene que ayudarte a entender la din\u00e1mica b\u00e1sica: preparar un escenario, ejecutar c\u00f3digo y comprobar un resultado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aun as\u00ed, puedes revisar algunos puntos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El test tiene un nombre claro.<\/li>\n\n\n\n<li>Comprueba un comportamiento concreto.<\/li>\n\n\n\n<li>No depende de otros tests.<\/li>\n\n\n\n<li>Se puede ejecutar varias veces con el mismo resultado.<\/li>\n\n\n\n<li>Falla si rompes la funci\u00f3n a prop\u00f3sito.<\/li>\n\n\n\n<li>Es f\u00e1cil de leer sin demasiada explicaci\u00f3n adicional.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Una t\u00e9cnica muy sencilla es modificar temporalmente la funci\u00f3n para que devuelva un resultado incorrecto. Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function sumar(a, b) {\n  return a - b;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si el test falla, buena se\u00f1al: significa que est\u00e1 comprobando algo real. Despu\u00e9s, vuelve a dejar la funci\u00f3n correcta.<\/p>\n\n\n\n<h3 id=\"h-que-hacer-cuando-un-test-falla\" class=\"wp-block-heading\">Qu\u00e9 hacer cuando un test falla<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando un test falla, no lo veas como una molestia. Un test fallido es informaci\u00f3n. Te est\u00e1 diciendo que hay una diferencia entre el comportamiento esperado y el comportamiento actual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ante un fallo, revisa si el test est\u00e1 bien planteado, si el resultado esperado es correcto, si la funci\u00f3n tiene un error o si ha cambiado un requisito y debes actualizar la prueba.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No todos los fallos significan que el c\u00f3digo productivo est\u00e1 mal. A veces el test est\u00e1 desactualizado o mal definido. Lo importante es analizar el motivo antes de cambiar cosas a ciegas.<\/p>\n\n\n\n<h2 id=\"h-jest-vitest-y-otras-herramientas-de-testing-javascript\" class=\"wp-block-heading\">Jest, Vitest y otras herramientas de testing JavaScript<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para escribir un test unitario JavaScript necesitas una herramienta que ejecute las pruebas y te permita expresar expectativas. Jest es una opci\u00f3n muy popular y adecuada para empezar. Vitest, por su parte, se ha convertido en una alternativa muy c\u00f3moda en proyectos basados en Vite.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La buena noticia es que, para los primeros pasos, la sintaxis suele ser muy parecida:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>test('describe un comportamiento', () =&gt; {\n  expect(resultado).toBe(valorEsperado);\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto significa que lo m\u00e1s importante no es memorizar una herramienta concreta, sino entender la mentalidad del testing: definir comportamientos esperados y comprobarlos de forma autom\u00e1tica.<\/p>\n\n\n\n<h3 id=\"h-cual-elegir-para-empezar\" class=\"wp-block-heading\">Cu\u00e1l elegir para empezar<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si est\u00e1s aprendiendo desde cero con JavaScript puro, Jest es una opci\u00f3n sencilla para practicar. Si ya trabajas en un proyecto con Vite, React o una configuraci\u00f3n moderna de frontend, Vitest puede integrarse de forma m\u00e1s natural.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En cualquier caso, no te obsesiones con elegir la herramienta perfecta. Para tu primer test, lo importante es empezar con una funci\u00f3n peque\u00f1a, escribir una prueba clara y ejecutarla desde la terminal.<\/p>\n\n\n\n<h2 id=\"h-ejemplo-completo-de-primer-test-unitario\" class=\"wp-block-heading\">Ejemplo completo de primer test unitario<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para recapitular, esta ser\u00eda una estructura m\u00ednima de proyecto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>primer-test-js\/\n\u251c\u2500\u2500 calcularPrecioFinal.js\n\u251c\u2500\u2500 calcularPrecioFinal.test.js\n\u251c\u2500\u2500 package.json\n\u2514\u2500\u2500 node_modules\/\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Archivo <code>calcularPrecioFinal.js<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function calcularPrecioFinal(precio, descuento) {\n  if (descuento &lt; 0 || descuento &gt; 100) {\n    throw new Error('El descuento debe estar entre 0 y 100');\n  }\n\n  return precio - precio * (descuento \/ 100);\n}\n\nmodule.exports = calcularPrecioFinal;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Archivo <code>calcularPrecioFinal.test.js<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const calcularPrecioFinal = require('.\/calcularPrecioFinal');\n\ntest('aplica un descuento del 20% correctamente', () =&gt; {\n  expect(calcularPrecioFinal(100, 20)).toBe(80);\n});\n\ntest('devuelve el mismo precio cuando el descuento es 0', () =&gt; {\n  expect(calcularPrecioFinal(100, 0)).toBe(100);\n});\n\ntest('lanza un error si el descuento es menor que 0', () =&gt; {\n  expect(() =&gt; calcularPrecioFinal(100, -5)).toThrow('El descuento debe estar entre 0 y 100');\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Comando para ejecutar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm test\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con esto ya tienes un ejemplo completo de testing JavaScript aplicado a una funci\u00f3n sencilla, realista y f\u00e1cil de entender.<\/p>\n\n\n\n<h2 id=\"h-preguntas-frecuentes-sobre-test-unitario-javascript\" class=\"wp-block-heading\">Preguntas frecuentes sobre test unitario JavaScript<\/h2>\n\n\n\n<h3 id=\"h-que-deberia-testear-primero-en-javascript\" class=\"wp-block-heading\">\u00bfQu\u00e9 deber\u00eda testear primero en JavaScript?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lo m\u00e1s recomendable es empezar por funciones puras y peque\u00f1as. Por ejemplo, utilidades de formato, c\u00e1lculos, validaciones o transformaciones de datos. Estas piezas son ideales para aprender porque reciben una entrada clara y devuelven una salida f\u00e1cil de comprobar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Evita empezar por componentes complejos, llamadas a APIs o l\u00f3gica muy acoplada a la interfaz. Ya llegar\u00e1s a eso m\u00e1s adelante.<\/p>\n\n\n\n<h3 id=\"h-necesito-saber-mucho-javascript-para-escribir-tests-unitarios\" class=\"wp-block-heading\">\u00bfNecesito saber mucho JavaScript para escribir tests unitarios?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No necesitas ser experta, pero s\u00ed conviene entender funciones, m\u00f3dulos, valores de retorno y errores b\u00e1sicos. Si sabes crear una funci\u00f3n, exportarla, importarla y ejecutarla, ya tienes una buena base para escribir tu primer test unitario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De hecho, escribir tests puede ayudarte a mejorar tu JavaScript porque te obliga a pensar con m\u00e1s precisi\u00f3n en entradas, salidas y comportamientos esperados.<\/p>\n\n\n\n<h3 id=\"h-jest-o-vitest-cual-es-mejor-para-empezar\" class=\"wp-block-heading\">\u00bfJest o Vitest: cu\u00e1l es mejor para empezar?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ambas herramientas son buenas. Jest es una opci\u00f3n muy extendida y f\u00e1cil de encontrar en tutoriales, proyectos y documentaci\u00f3n. Vitest suele encajar muy bien en proyectos modernos con Vite y ofrece una experiencia r\u00e1pida e integrada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para aprender el concepto de pruebas unitarias JavaScript, cualquiera de las dos te sirve. Lo importante es no quedarte bloqueada en la elecci\u00f3n de la herramienta y empezar con un caso sencillo.<\/p>\n\n\n\n<h2 id=\"h-mas-alla-del-primer-test-como-seguir-practicando\" class=\"wp-block-heading\">M\u00e1s all\u00e1 del primer test: c\u00f3mo seguir practicando<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que escribes tu primer test, el siguiente paso es practicar con funciones un poco m\u00e1s variadas. Puedes crear peque\u00f1as utilidades y probarlas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunas ideas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una funci\u00f3n que valide si un email tiene un formato b\u00e1sico correcto.<\/li>\n\n\n\n<li>Una funci\u00f3n que convierta minutos en horas y minutos.<\/li>\n\n\n\n<li>Una funci\u00f3n que calcule el total de un carrito.<\/li>\n\n\n\n<li>Una funci\u00f3n que filtre productos por categor\u00eda.<\/li>\n\n\n\n<li>Una funci\u00f3n que formatee una fecha.<\/li>\n\n\n\n<li>Una funci\u00f3n que determine si una contrase\u00f1a cumple ciertos requisitos.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Lo ideal es que cada ejercicio tenga varios casos: uno normal, uno l\u00edmite y uno inv\u00e1lido. As\u00ed empiezas a construir una mentalidad de testing m\u00e1s completa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, si validas una contrase\u00f1a, no pruebes solo una contrase\u00f1a correcta. Prueba tambi\u00e9n una demasiado corta, una sin n\u00fameros, una vac\u00eda y una con caracteres v\u00e1lidos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para organizar estos contenidos dentro de una visi\u00f3n m\u00e1s amplia, puedes leer la gu\u00eda sobre la <a href=\"https:\/\/chatgpt.com\/blog\/piramide-de-testing-como-organizar-las-pruebas-de-una-aplicacion\/\">pir\u00e1mide de testing y c\u00f3mo organizar las pruebas de una aplicaci\u00f3n<\/a>.<\/p>\n\n\n\n<h2 id=\"h-del-creo-que-funciona-al-se-que-esta-probado\" class=\"wp-block-heading\">Del \u201ccreo que funciona\u201d al \u201cs\u00e9 que est\u00e1 probado\u201d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Escribir tu primer test unitario en JavaScript no va solo de instalar Jest, crear un archivo <code>.test.js<\/code> y ejecutar <code>npm test<\/code>. Eso es la parte t\u00e9cnica. La parte importante es el cambio de mentalidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando escribes tests, empiezas a definir con m\u00e1s claridad qu\u00e9 esperas de tu c\u00f3digo. Dejas de confiar \u00fanicamente en la intuici\u00f3n o en pruebas manuales repetidas y empiezas a construir una red de seguridad. Esa red no elimina todos los errores, pero s\u00ed te ayuda a detectarlos antes y a trabajar con m\u00e1s confianza.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al principio puede parecer lento. Es normal. Est\u00e1s aprendiendo una forma nueva de pensar. Pero con la pr\u00e1ctica, los tests se vuelven una parte natural del desarrollo. Te ayudan a refactorizar, a documentar comportamientos y a evitar que errores antiguos vuelvan a aparecer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No necesitas empezar con una suite de testing perfecta. Empieza con una funci\u00f3n peque\u00f1a. Escribe un test claro. Ejec\u00fatalo. R\u00f3mpelo a prop\u00f3sito. Arr\u00e9glalo. Repite el proceso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ese primer test puede parecer simple, pero marca un antes y un despu\u00e9s: pasas de preguntarte \u201ccreo que funciona\u201d a poder decir \u201ctengo una prueba que lo comprueba\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aprende c\u00f3mo escribir tu primer test unitario en JavaScript paso a paso, desde la configuraci\u00f3n inicial con Jest hasta la creaci\u00f3n de pruebas sencillas, casos l\u00edmite y buenas pr\u00e1cticas para empezar con testing de forma clara y segura.<\/p>\n","protected":false},"author":1,"featured_media":19657,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"mg_rating_sum":0,"mg_rating_count":0,"mg_rating_average":0,"footnotes":""},"categories":[82],"tags":[633,631,630,632,629,628,604,627],"class_list":["post-19636","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-como-hacer-tests-en-javascript","tag-escribir-tests-unitarios","tag-jest-javascript","tag-primer-test-javascript","tag-pruebas-automatizadas-javascript","tag-pruebas-unitarias-javascript","tag-testing-frontend","tag-testing-javascript"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v28.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>C\u00f3mo escribir tu primer test unitario en JavaScript<\/title>\n<meta name=\"description\" content=\"Descubre c\u00f3mo escribir tu primer test unitario en JavaScript con ejemplos pr\u00e1cticos, configuraci\u00f3n con Jest, buenas pr\u00e1cticas y consejos para empezar con pruebas unitarias.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo escribir tu primer test unitario en JavaScript\" \/>\n<meta property=\"og:description\" content=\"Descubre c\u00f3mo escribir tu primer test unitario en JavaScript con ejemplos pr\u00e1cticos, configuraci\u00f3n con Jest, buenas pr\u00e1cticas y consejos para empezar con pruebas unitarias.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"Marta Gonz\u00e1lez - Desarrollo Front-end\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=100031998110346\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/profile.php?id=100031998110346\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-03T05:12:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript.avif\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"marta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"marta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/\"},\"author\":{\"name\":\"marta\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#\\\/schema\\\/person\\\/3df598b4756cd72fec6126546267c738\"},\"headline\":\"C\u00f3mo escribir tu primer test unitario en JavaScript\",\"datePublished\":\"2026-10-03T05:12:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/\"},\"wordCount\":3649,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#\\\/schema\\\/person\\\/3df598b4756cd72fec6126546267c738\"},\"image\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/como-escribir-primer-test-unitario-javascript.avif\",\"keywords\":[\"c\u00f3mo hacer tests en JavaScript\",\"escribir tests unitarios\",\"Jest JavaScript\",\"primer test JavaScript\",\"pruebas automatizadas JavaScript\",\"pruebas unitarias JavaScript\",\"testing frontend\",\"testing JavaScript\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/\",\"name\":\"C\u00f3mo escribir tu primer test unitario en JavaScript\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/como-escribir-primer-test-unitario-javascript.avif\",\"datePublished\":\"2026-10-03T05:12:00+00:00\",\"description\":\"Descubre c\u00f3mo escribir tu primer test unitario en JavaScript con ejemplos pr\u00e1cticos, configuraci\u00f3n con Jest, buenas pr\u00e1cticas y consejos para empezar con pruebas unitarias.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/#primaryimage\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/como-escribir-primer-test-unitario-javascript.avif\",\"contentUrl\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/como-escribir-primer-test-unitario-javascript.avif\",\"width\":1536,\"height\":1024,\"caption\":\"Gu\u00eda visual para aprender a crear un test unitario en JavaScript paso a paso, desde la funci\u00f3n inicial hasta la prueba superada.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-escribir-tu-primer-test-unitario-en-javascript\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C\u00f3mo escribir tu primer test unitario en JavaScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#website\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/\",\"name\":\"Marta Gonz\u00e1lez\",\"description\":\"Desarrollo Front-end\",\"publisher\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#\\\/schema\\\/person\\\/3df598b4756cd72fec6126546267c738\"},\"alternateName\":\"Marta Gonz\u00e1lez Desarrollo Frontend\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#\\\/schema\\\/person\\\/3df598b4756cd72fec6126546267c738\",\"name\":\"marta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-logo-martagonzalez.avif\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-logo-martagonzalez.avif\",\"contentUrl\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-logo-martagonzalez.avif\",\"width\":575,\"height\":575,\"caption\":\"marta\"},\"logo\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-logo-martagonzalez.avif\"},\"description\":\"Me dedico al desarrollo front-end. Tengo estudios de multimedia, administraci\u00f3n de sistemas y desarrollo de aplicaciones inform\u00e1ticas. Trabajo con lenguajes HTML5, CSS3 y JavaScript. Me gustan los retos, soy autodidacta, creativa y proactiva. Aprendo con facilidad y me adapto a nuevos entornos r\u00e1pidamente.\",\"sameAs\":[\"https:\\\/\\\/martagonzalez.dev\\\/wp\",\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=100031998110346\",\"https:\\\/\\\/www.instagram.com\\\/mcgweb\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/martacg\\\/\",\"marta\"],\"birthDate\":\"1986-01-07\",\"gender\":\"mujer\",\"knowsAbout\":[\"HTML5\",\"CSS3\",\"Javascript\"],\"jobTitle\":\"Desarrollo Frontend\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/author\\\/marta\\\/\",\"publishingPrinciples\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/politica-de-privacidad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3mo escribir tu primer test unitario en JavaScript","description":"Descubre c\u00f3mo escribir tu primer test unitario en JavaScript con ejemplos pr\u00e1cticos, configuraci\u00f3n con Jest, buenas pr\u00e1cticas y consejos para empezar con pruebas unitarias.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo escribir tu primer test unitario en JavaScript","og_description":"Descubre c\u00f3mo escribir tu primer test unitario en JavaScript con ejemplos pr\u00e1cticos, configuraci\u00f3n con Jest, buenas pr\u00e1cticas y consejos para empezar con pruebas unitarias.","og_url":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/","og_site_name":"Marta Gonz\u00e1lez - Desarrollo Front-end","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=100031998110346","article_author":"https:\/\/www.facebook.com\/profile.php?id=100031998110346","article_published_time":"2026-10-03T05:12:00+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript.avif","type":"image\/jpeg"}],"author":"marta","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"marta","Tiempo de lectura":"16 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/#article","isPartOf":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/"},"author":{"name":"marta","@id":"https:\/\/martagonzalez.dev\/wp\/#\/schema\/person\/3df598b4756cd72fec6126546267c738"},"headline":"C\u00f3mo escribir tu primer test unitario en JavaScript","datePublished":"2026-10-03T05:12:00+00:00","mainEntityOfPage":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/"},"wordCount":3649,"commentCount":0,"publisher":{"@id":"https:\/\/martagonzalez.dev\/wp\/#\/schema\/person\/3df598b4756cd72fec6126546267c738"},"image":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript.avif","keywords":["c\u00f3mo hacer tests en JavaScript","escribir tests unitarios","Jest JavaScript","primer test JavaScript","pruebas automatizadas JavaScript","pruebas unitarias JavaScript","testing frontend","testing JavaScript"],"articleSection":["Blog"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/","url":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/","name":"C\u00f3mo escribir tu primer test unitario en JavaScript","isPartOf":{"@id":"https:\/\/martagonzalez.dev\/wp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/#primaryimage"},"image":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript.avif","datePublished":"2026-10-03T05:12:00+00:00","description":"Descubre c\u00f3mo escribir tu primer test unitario en JavaScript con ejemplos pr\u00e1cticos, configuraci\u00f3n con Jest, buenas pr\u00e1cticas y consejos para empezar con pruebas unitarias.","breadcrumb":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/#primaryimage","url":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript.avif","contentUrl":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/10\/como-escribir-primer-test-unitario-javascript.avif","width":1536,"height":1024,"caption":"Gu\u00eda visual para aprender a crear un test unitario en JavaScript paso a paso, desde la funci\u00f3n inicial hasta la prueba superada."},{"@type":"BreadcrumbList","@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-escribir-tu-primer-test-unitario-en-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/martagonzalez.dev\/wp\/"},{"@type":"ListItem","position":2,"name":"C\u00f3mo escribir tu primer test unitario en JavaScript"}]},{"@type":"WebSite","@id":"https:\/\/martagonzalez.dev\/wp\/#website","url":"https:\/\/martagonzalez.dev\/wp\/","name":"Marta Gonz\u00e1lez","description":"Desarrollo Front-end","publisher":{"@id":"https:\/\/martagonzalez.dev\/wp\/#\/schema\/person\/3df598b4756cd72fec6126546267c738"},"alternateName":"Marta Gonz\u00e1lez Desarrollo Frontend","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/martagonzalez.dev\/wp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/martagonzalez.dev\/wp\/#\/schema\/person\/3df598b4756cd72fec6126546267c738","name":"marta","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2025\/05\/cropped-logo-martagonzalez.avif","url":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2025\/05\/cropped-logo-martagonzalez.avif","contentUrl":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2025\/05\/cropped-logo-martagonzalez.avif","width":575,"height":575,"caption":"marta"},"logo":{"@id":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2025\/05\/cropped-logo-martagonzalez.avif"},"description":"Me dedico al desarrollo front-end. Tengo estudios de multimedia, administraci\u00f3n de sistemas y desarrollo de aplicaciones inform\u00e1ticas. Trabajo con lenguajes HTML5, CSS3 y JavaScript. Me gustan los retos, soy autodidacta, creativa y proactiva. Aprendo con facilidad y me adapto a nuevos entornos r\u00e1pidamente.","sameAs":["https:\/\/martagonzalez.dev\/wp","https:\/\/www.facebook.com\/profile.php?id=100031998110346","https:\/\/www.instagram.com\/mcgweb","https:\/\/www.linkedin.com\/in\/martacg\/","marta"],"birthDate":"1986-01-07","gender":"mujer","knowsAbout":["HTML5","CSS3","Javascript"],"jobTitle":"Desarrollo Frontend","url":"https:\/\/martagonzalez.dev\/wp\/author\/marta\/","publishingPrinciples":"https:\/\/martagonzalez.dev\/wp\/politica-de-privacidad\/"}]}},"_links":{"self":[{"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/posts\/19636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/comments?post=19636"}],"version-history":[{"count":3,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/posts\/19636\/revisions"}],"predecessor-version":[{"id":19658,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/posts\/19636\/revisions\/19658"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/media\/19657"}],"wp:attachment":[{"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/media?parent=19636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/categories?post=19636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/tags?post=19636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}