Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Las pruebas de unidades para las plantillas personalizadas de Google Tag Manager te ayudan a validar la funcionalidad de tus plantillas. Puedes crear un conjunto de pruebas para cada plantilla
que pueden ejecutarse sin necesidad de implementar su etiqueta, lo que le permite
probar de forma continua el comportamiento de la plantilla durante el desarrollo. Cada prueba puede
proporcionar valores de entrada de muestra, simular llamadas a funciones y comportamiento de código de aserción.
Limitaciones
Las pruebas de unidades no comprueban las reglas de validación, pero puedes comprobar la validación manualmente con el botón Ejecutar código.
Las verificaciones de permisos no se realizan en APIs simuladas en pruebas de unidades.
En esta guía, aprenderás a escribir pruebas de unidades para tu plantilla personalizada. En este ejemplo, se crea una plantilla de variables que toma una cadena de entrada y muestra
la versión en mayúsculas de esa cadena.
Crea una nueva plantilla de variables. Haz clic en Templates en el panel de navegación izquierdo y, luego, en New en la sección Variable Templates.
Haz clic en Campos.
Haz clic en Agregar campo y selecciona Entrada de texto. Asigna el nombre text1 al campo y establece el nombre visible en "Text 1".
En la pestaña Code, reemplaza el código predeterminado por este JavaScript de zona de pruebas:
let input = data.text1;
return input.toUpperCase();
Haz clic en Pruebas para abrir la pestaña de pruebas.
Haz clic en Agregar prueba y cambia el nombre de la prueba de "Untitled test 1" a "Handles strings".
Haz clic en el ícono de expandir (expand_more) para acceder al editor de JavaScript de la zona de pruebas. Reemplaza el código con este JavaScript de zona de pruebas:
//CallrunCodetorunthetemplate's code with a lowercase stringletvariableResult=runCode({text1:'this is a test'});//ValidatethattheresultofrunCodeisanuppercasestring.assertThat(variableResult).isEqualTo('THIS IS A TEST');
Esta prueba pasa la cadena 'this is a test' a la variable y verifica que esta muestre el valor esperado de 'THIS IS A TEST'. La API de runCode se usa para ejecutar el código de plantilla en la pestaña Code. El argumento para runCode es un objeto que se usa como el global de datos. La API de assertThat muestra un objeto que se puede usar para realizar aserciones sobre el valor de un sujeto con fluidez.
Haz clic en ▶ Run Tests para ejecutar la prueba. El resultado de la prueba aparecerá en la consola.
El botón ▶ Run Tests ejecuta todas las pruebas habilitadas en la plantilla, en el orden que se muestra. Para cambiar el orden, usa el ícono de arrastrar (⠿). Para habilitar o inhabilitar temporalmente una prueba, haz clic en el círculo que se encuentra a la izquierda de su nombre. Para ejecutar una sola prueba, haz clic en el botón ▶ que aparece cuando mueves el mouse sobre la prueba.
La consola debería imprimir la cantidad total de pruebas ejecutadas y la cantidad de pruebas que fallaron, si las hubiera. En este caso, solo se ejecutó una prueba, que debería ser exitosa.
Vuelve a hacer clic en Agregar prueba para agregar una segunda prueba. Cambia el nombre de la prueba de "Untitled test 2" a "Handles undefined".
Haz clic en la prueba para expandirla y abrir el editor de JavaScript de la zona de pruebas. Ingresa JavaScript de zona de pruebas en el editor:
Haz clic en ▶ Run Tests para ejecutar todas las pruebas a la vez. El resultado de la prueba aparecerá en la consola.
La prueba Handles undefined debería fallar. ¡Felicitaciones! Encontraste un error.
Haz clic en Código para volver y editar el código JavaScript de la zona de pruebas de la plantilla. Actualiza el código JavaScript de la zona de pruebas de la siguiente manera:
[null,null,["Última actualización: 2025-07-25 (UTC)"],[[["\u003cp\u003eGoogle Tag Manager uses unit tests to validate custom template functionality before deployment.\u003c/p\u003e\n"],["\u003cp\u003eUnit tests for custom templates utilize sample inputs, mock functions, and assertions to verify code behavior.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003erunCode\u003c/code\u003e API executes the template's code within the test environment, while \u003ccode\u003eassertThat\u003c/code\u003e verifies the output against expected values.\u003c/p\u003e\n"],["\u003cp\u003eThese tests help identify and address potential issues, such as handling undefined or unexpected inputs, before deploying the template.\u003c/p\u003e\n"],["\u003cp\u003eBy creating and running unit tests for your custom templates, you can improve the reliability and stability of your Google Tag Manager implementations.\u003c/p\u003e\n"]]],["Unit tests for Google Tag Manager templates validate functionality by running tests without deployment. You create tests within the template editor under the \"Tests\" tab. Tests use `runCode` to simulate template execution with sample data and `assertThat` to verify results. The process involves creating a template, adding input fields, writing code, and creating tests to handle various inputs. Tests can be run individually or collectively. Limitations are that Unit tests do not check validation rules and permission checks do not happen.\n"],null,["# Tests\n\nUnit tests for Google Tag Manager custom templates help you validate the functionality of your templates. You can create a set of tests for each template\nthat can be run without needing to deploy your tag, which allows you to\ncontinuously test your template's behavior during development. Each test can\nprovide sample input values, mock function calls, and assert code behavior.\n\nLimitations\n-----------\n\n- Unit tests do not check validation rules but you can manually check validation using the **Run Code** button.\n- Permission checks do not happen on mocked APIs in unit tests.\n\nThis guide will walk you through how to write unit tests for your custom template. This example creates a variable template that takes an input string and returns\nthe uppercase version of that string.\n\n1. Create a new variable template. Click **Templates** in the left navigation and click **New** under the **Variable Templates** section.\n\n2. Click **Fields**.\n\n3. Click **Add Field** and select **Text input** . Name the field `text1` and set the display name to *\"Text 1\"*.\n\n4. In the **Code** tab, replace the default code with this sandboxed JavaScript:\n\n let input = data.text1;\n return input.toUpperCase();\n\n5. Click **Tests** to open the testing tab.\n\n6. Click **Add Test** and change the test's name from *\"Untitled test 1\"* to *\"Handles strings\"*.\n\n7. Click on the expand icon (*expand_more*) to reveal the test's sandboxed JavaScript editor. Replace the code with this sandboxed JavaScript:\n\n // Call runCode to run the template's code with a lowercase string\n let variableResult = runCode({text1: 'this is a test'});\n // Validate that the result of runCode is an uppercase string.\n assertThat(variableResult).isEqualTo('THIS IS A TEST');\n\n This test passes the string *`'this is a test'`* to the variable and verifies that the variable returns the expected value of *`'THIS IS A TEST'`* . The [`runCode`](/tag-platform/tag-manager/templates/api#runcode) API is used to run the template code in the **Code** tab. The argument to `runCode` is an object that is used as the data global. The [`assertThat`](/tag-platform/tag-manager/templates/api#assertthat) API returns an object that can be used to fluently make assertions about a subject's value.\n8. Click **▶ Run Tests** to run the test. The output of the test will appear in the Console.\n\n The **▶ Run Tests** button runs all of the enabled tests in the template, in the order shown. To change the order, use the drag icon (⠿). A test can be temporarily enabled or disabled by clicking on the circle to the left of the test name. To run a single test, click the ▶ button that appears when you move the mouse over the test.\n\n The console should print the total number of tests run and the number of tests that failed, if any. In this case, only one test was run and it should pass.\n9. Click **Add Test** again to add a second test. Change the test's name from *\"Untitled test 2\"* to *\"Handles undefined\"*.\n\n10. Click on the test to expand it and reveal the sandboxed JavaScript editor. Enter sandboxed JavaScript in the editor:\n\n let variableResult = runCode({});\n assertThat(variableResult).isEqualTo(undefined);\n\n | **Note:** [`runCode`](/tag-platform/tag-manager/templates/api#runcode) is called with an empty object, which means the value of the `text1` field will be `undefined` in this test case.\n11. Click **▶ Run Tests** to run all of the tests at once. The output of the test will appear in the console.\n\n The *Handles undefined* test should fail. Congratulations, you found a bug!\n12. Click **Code** to go back and edit the template's sandboxed JavaScript code. Update the sandboxed JavaScript as follows:\n\n const getType = require('getType');\n\n let input = data.text1;\n if (getType(input) !== 'string') {\n return input;\n }\n return input.toUpperCase();\n\n The updated code follows the best practice of validating the `input` variable before using it.\n13. Click **Tests** to go back to the list of test cases.\n\n14. Click **▶ Run Tests** to run all of the test cases again. This time the *Handles undefined* test should pass.\n\n15. Click **Save**, and close the Template Editor."]]