Tests

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.

  1. Erstellen Sie eine neue Variablenvorlage. Klicken Sie im linken Navigationsbereich auf Vorlagen und dann im Bereich Variablenvorlagen auf Neu.

  2. Klicken Sie auf Felder.

  3. 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.

  4. Ersetzen Sie auf dem Tab Code den Standardcode durch dieses in der Sandbox ausgeführte JavaScript:

    let input = data.text1;
    return input.toUpperCase();
    
  5. Klicken Sie auf Tests, um den Tab „Test“ zu öffnen.

  6. Klicken Sie auf Add Test (Test hinzufügen) und ändern Sie den Namen des Tests von „Untitled test 1“ zu „Handlesstrings“.

  7. Klicken Sie auf das Symbol zum Maximieren (), um den in der Sandbox ausgeführten JavaScript-Editor des Tests aufzurufen. Ersetzen Sie den Code durch dieses in einer Sandbox ausgeführte JavaScript:

    // Call runCode to run the template's code with a lowercase string
    let variableResult = runCode({text1: 'this is a test'});
    // Validate that the result of runCode is an uppercase string.
    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.

  8. 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.

  9. 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".

  10. 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:

    let variableResult = runCode({});
    assertThat(variableResult).isEqualTo(undefined);
    
  11. 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!

  12. 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:

    const getType = require('getType');
    
    let input = data.text1;
    if (getType(input) !== 'string') {
      return input;
    }
    return input.toUpperCase();
    

    Der aktualisierte Code folgt der Best Practice zur Validierung der Variable input, bevor sie verwendet wird.

  13. Klicken Sie auf Tests, um zur Liste der Testläufe zurückzukehren.

  14. 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.

  15. Klicken Sie auf Save (Speichern) und schließen Sie den Vorlageneditor.