Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Mit Einheitentests für benutzerdefinierte Google Tag Manager-Vorlagen können Sie die Funktionalität Ihrer Vorlagen prüfen. Für jede Vorlage können Sie eine Reihe von Tests erstellen.
die ohne Bereitstellung des Tags ausgeführt werden können.
das Verhalten Ihrer Vorlage während der Entwicklung kontinuierlich testen. Jeder Test kann
Beispieleingabewerte bereitstellen, Funktionsaufrufe simulieren und Codeverhalten durchsetzen.
Beschränkungen
Bei Einheitentests werden keine Validierungsregeln geprüft. Sie können die Validierung aber manuell über die Schaltfläche Code ausführen prüfen.
Berechtigungsprüfungen finden für Mock-APIs in Einheitentests nicht statt.
In diesem Leitfaden erfahren Sie, wie Sie Einheitentests für Ihre benutzerdefinierte Vorlage schreiben. In diesem Beispiel wird eine Variablenvorlage erstellt, die mithilfe eines Eingabestrings
die Version dieser Zeichenfolge in Großbuchstaben.
Erstellen Sie eine neue Variablenvorlage. Klicken Sie im linken Navigationsbereich auf Vorlagen und dann im Bereich Variablenvorlagen auf Neu.
Klicken Sie auf Felder.
Klicken Sie auf Feld hinzufügen und wählen Sie Texteingabe aus. Nennen Sie das Feld text1 und legen Sie den Anzeigenamen auf Text 1 fest.
Ersetzen Sie auf dem Tab Code den Standardcode durch dieses in der Sandbox ausgeführte JavaScript:
let input = data.text1;
return input.toUpperCase();
Klicken Sie auf Tests, um den Tab „Test“ zu öffnen.
Klicken Sie auf Add Test (Test hinzufügen) und ändern Sie den Namen des Tests von „Untitled test 1“ zu „Handlesstrings“.
Klicken Sie auf das Symbol zum Maximieren (expand_more), um den in der Sandbox ausgeführten JavaScript-Editor des Tests aufzurufen. Ersetzen Sie den Code durch dieses in einer Sandbox ausgeführte JavaScript:
//CallrunCodetorunthetemplate's code with a lowercase stringletvariableResult=runCode({text1:'this is a test'});//ValidatethattheresultofrunCodeisanuppercasestring.assertThat(variableResult).isEqualTo('THIS IS A TEST');
Dieser Test übergibt den String 'this is a test' an die Variable und überprüft, ob die Variable den erwarteten Wert von 'THIS IS A TEST' zurückgibt. Die runCode API wird verwendet, um den Vorlagencode auf dem Tab Code auszuführen. Das Argument für runCode ist ein Objekt, das als globale Daten verwendet wird. Die assertThat API gibt ein Objekt zurück, mit dem fließend Assertions zum Wert eines Objekts gemacht werden können.
Klicken Sie auf ▶ Tests ausführen, um den Test auszuführen. Die Ausgabe des Tests wird in der Konsole angezeigt.
Mit der Schaltfläche ▶ Tests ausführen werden alle aktivierten Tests in der Vorlage in der angegebenen Reihenfolge ausgeführt. Mit dem Ziehsymbol (⠿) kannst du die Reihenfolge ändern. Ein Test kann vorübergehend aktiviert oder deaktiviert werden, indem Sie auf den Kreis links neben dem Testnamen klicken. Um einen einzelnen Test durchzuführen, klicken Sie auf die Schaltfläche ▶, die angezeigt wird, wenn Sie den Mauszeiger über den Test bewegen.
Die Konsole sollte die Gesamtzahl der ausgeführten Tests und gegebenenfalls die Anzahl der fehlgeschlagenen Tests ausgeben. In diesem Fall wurde nur ein Test ausgeführt und er sollte den Test bestehen.
Klicken Sie noch einmal auf Test hinzufügen, um einen zweiten Test hinzuzufügen. Ändern Sie den Namen des Tests von "Untitled test 2" zu "Handles undefined".
Klicke auf den Test, um ihn zu maximieren und den JavaScript-Editor in der Sandbox anzuzeigen. Geben Sie JavaScript-Code, der in einer Sandbox ausgeführt wird, in den Editor ein:
Klicken Sie auf ▶ Tests ausführen, um alle Tests gleichzeitig auszuführen. Die Ausgabe des Tests wird in der Konsole angezeigt.
Der Test Handles undefined sollte fehlschlagen. Herzlichen Glückwunsch, Sie haben einen Fehler gefunden!
Klicken Sie auf Code, um zurückzugehen und den in der Sandbox ausgeführten JavaScript-Code der Vorlage zu bearbeiten. Aktualisieren Sie das in der Sandbox ausgeführte JavaScript wie folgt:
Der aktualisierte Code folgt der Best Practice zur Validierung der Variable input, bevor sie verwendet wird.
Klicken Sie auf Tests, um zur Liste der Testläufe zurückzukehren.
Klicken Sie auf ▶ Tests ausführen, um alle Testläufe noch einmal auszuführen. Dieses Mal sollte der Test Handles undefined (Handles nicht definiert) erfolgreich sein.
Klicken Sie auf Save (Speichern) und schließen Sie den Vorlageneditor.
[null,null,["Zuletzt aktualisiert: 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."]]