Tests

Mithilfe von Unittests für benutzerdefinierte Google Tag Manager-Vorlagen können Sie die Funktionalität Ihrer Vorlagen prüfen. Sie können für jede Vorlage eine Reihe von Tests erstellen, die ohne das Tag ausgeführt werden müssen. So können Sie das Verhalten der Vorlage während der Entwicklung kontinuierlich testen. Jeder Test kann Beispieleingabewerte, simulierte Funktionsaufrufe und Codeverhalten enthalten.

Beschränkungen

  • Bei Einheitentests werden keine Validierungsregeln geprüft, Sie können die Validierung aber manuell mit der Schaltfläche Code ausführen prüfen.
  • Berechtigungsprüfungen werden nicht für simulierte APIs in Einheitentests durchgeführt.

In diesem Leitfaden erfahren Sie, wie Sie Einheitentests für Ihre benutzerdefinierte Vorlage schreiben. In diesem Beispiel wird eine Variablenvorlage erstellt, die einen Eingabestring verwendet und die Großbuchstabenversion dieses Strings zurückgibt.

  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. Geben Sie dem Feld den Namen text1 und legen Sie als Anzeigenamen „Text 1“ fest.

  4. Ersetzen Sie auf dem Tab Code den Standardcode durch diesen in einer Sandbox ausgeführten JavaScript-Code:

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

  6. Klicken Sie auf Test hinzufügen und ändern Sie den Namen des Tests von „Unbenannter Test 1“ in „Handles string“.

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

    // 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');
    

    Bei diesem Test wird der String 'this is a test' an die Variable übergeben und es wird geprüft, ob die Variable den erwarteten Wert von 'THIS IS A TEST' zurückgibt. Mit der runCode API wird der Vorlagencode auf dem Tab Code ausgeführt. 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 Äußerungen über den Wert eines Subjekts erstellt werden können.

  8. Klicken Sie auf ▶ Tests ausführen, um den Test auszuführen. Die Ausgabe des Tests wird in der Console angezeigt.

    Mit der Schaltfläche ▶ Tests ausführen werden alle aktivierten Tests in der Vorlage in der angegebenen Reihenfolge ausgeführt. Um die Reihenfolge zu ändern, verwenden Sie das Ziehsymbol (⠿). Sie können einen Test vorübergehend aktivieren oder deaktivieren, indem Sie auf den Kreis links neben dem Testnamen klicken. Wenn Sie einen einzelnen Test durchführen möchten, bewegen Sie den Mauszeiger auf den Test und klicken Sie dann auf die Schaltfläche ▶.

    In der Console sollte die Gesamtzahl der ausgeführten Tests und gegebenenfalls die Anzahl der fehlgeschlagenen Tests ausgegeben werden. In diesem Fall wurde nur ein Test ausgeführt und sollte bestehen.

  9. Klicken Sie noch einmal auf Test hinzufügen, um einen zweiten Test hinzuzufügen. Ändern Sie den Namen des Tests von „Unbenannter Test 2“ zu „Handles undefined“.

  10. Klicken Sie auf den Test, um ihn zu maximieren und den JavaScript-Editor zu sehen, der in der Sandbox ausgeführt wird. Geben Sie in den Editor JavaScript in einer Sandbox 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 nicht verarbeitet werden. Herzlichen Glückwunsch, Sie haben einen Fehler gefunden!

  12. Klicken Sie auf Code, um zurückzugehen und den Sandbox-JavaScript-Code der Vorlage zu bearbeiten. Aktualisieren Sie das JavaScript in der Sandbox so:

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

    Der aktualisierte Code folgt der Best Practice, die Variable input vor der Verwendung zu validieren.

  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 (Nicht definierte Aliasse) bestanden werden.

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