Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Les tests unitaires pour les modèles personnalisés Google Tag Manager vous permettent de valider le fonctionnement de vos modèles. Vous pouvez créer un ensemble de tests pour chaque modèle
qui peut s'exécuter sans qu'il soit nécessaire de déployer votre balise, ce qui vous permet
tester en permanence le comportement de votre modèle pendant le développement. Chaque test peut
fournir des exemples de valeurs d'entrée, simuler des appels de fonction et valider le comportement du code.
Limites
Les tests unitaires ne vérifient pas les règles de validation, mais vous pouvez vérifier manuellement la validation à l'aide du bouton Exécuter le code.
Les vérifications d'autorisation ne sont pas effectuées sur les API simulées dans les tests unitaires.
Ce guide vous explique comment écrire des tests unitaires pour votre modèle personnalisé. Cet exemple crée un modèle de variable qui accepte une chaîne d'entrée et renvoie
la version majuscule de cette chaîne.
Créez un modèle de variable. Cliquez sur Modèles dans le panneau de navigation de gauche, puis sur Nouveau dans la section Modèles de variable.
Cliquez sur Champs.
Cliquez sur Ajouter un champ et sélectionnez Saisie de texte. Nommez le champ text1 et définissez le nom à afficher sur "Texte 1".
Dans l'onglet Code, remplacez le code par défaut par ce JavaScript en bac à sable:
let input = data.text1;
return input.toUpperCase();
Cliquez sur Tests pour ouvrir l'onglet des tests.
Cliquez sur Ajouter un test, puis remplacez le nom du test "Untitled test 1" (Test sans titre 1) par Handles strings".
Cliquez sur l'icône Développer (expand_more) pour afficher l'éditeur JavaScript en bac à sable du test. Remplacez le code par ce JavaScript de bac à sable:
//CallrunCodetorunthetemplate's code with a lowercase stringletvariableResult=runCode({text1:'this is a test'});//ValidatethattheresultofrunCodeisanuppercasestring.assertThat(variableResult).isEqualTo('THIS IS A TEST');
Ce test transmet la chaîne 'this is a test' à la variable et vérifie qu'elle renvoie la valeur attendue 'THIS IS A TEST'. L'API runCode permet d'exécuter le code du modèle dans l'onglet Code. L'argument de runCode est un objet utilisé comme ensemble de données global. L'API assertThat renvoie un objet qui peut être utilisé pour effectuer facilement des assertions sur la valeur d'un sujet.
Cliquez sur ▶ Exécuter les tests pour lancer le test. Le résultat du test s'affiche dans la console.
Le bouton ▶ Run Tests (Exécuter les tests) permet d'exécuter tous les tests activés dans le modèle, dans l'ordre indiqué. Pour modifier cet ordre, utilisez l'icône de déplacement (⠿). Vous pouvez activer ou désactiver temporairement un test en cliquant sur le cercle situé à gauche de son nom. Pour exécuter un seul test, cliquez sur le bouton ▶ qui apparaît lorsque vous passez la souris sur le test.
La console affiche le nombre total de tests exécutés et le nombre de tests ayant échoué, le cas échéant. Dans ce cas, un seul test a été exécuté, et il devrait réussir.
Cliquez à nouveau sur Add Test (Ajouter un test) pour ajouter un second test. Remplacez le nom du test Untitled test 2 par Handles undefined.
Cliquez sur le test pour le développer et afficher l'éditeur JavaScript dans un bac à sable. Saisissez le code JavaScript de bac à sable dans l'éditeur:
Cliquez sur ▶ Exécuter les tests pour exécuter tous les tests en même temps. Le résultat du test s'affiche dans la console.
Le test Handles undefined doit échouer. Félicitations, vous avez trouvé un bug !
Cliquez sur Code pour revenir en arrière et modifier le code JavaScript de bac à sable du modèle. Mettez à jour le code JavaScript de bac à sable comme suit:
Le code mis à jour respecte la bonne pratique qui consiste à valider la variable input avant de l'utiliser.
Cliquez sur Tests pour revenir à la liste des scénarios de test.
Cliquez sur ▶ Exécuter des tests pour exécuter à nouveau tous les scénarios de test. Cette fois, le test Handles undefined devrait réussir.
Cliquez sur Save (Enregistrer), puis fermez l'éditeur de modèles.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/25 (UTC).
[null,null,["Dernière mise à jour le 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."]]