テスト

Google タグ マネージャー カスタム テンプレートの単体テストを使って、テンプレートの機能を検証できます。タグをデプロイすることなく実行できるテンプレートごとに一連のテストを作成できます。これにより、開発中にテンプレートの動作を継続的にテストできます。各テストは、サンプル入力値、関数モックの呼び出し、コード動作のアサートを行うことができます。

制限事項

  • 単体テストでは検証ルールを確認しませんが、[Run Code] ボタンを使用して手動で検証を確認できます。
  • 単体テストで、モックされた API に対して権限チェックは行われません。

このガイドでは、カスタム テンプレートの単体テストの記述方法について説明します。この例では、入力文字列を受け取って大文字の文字列を返す変数テンプレートを作成します。

  1. 新しい変数テンプレートを作成します。左側のナビゲーションで [テンプレート] をクリックし、[変数テンプレート] セクションにある [新規] ボタンをクリックします。

  2. [フィールド] をクリックします。

  3. [フィールドを追加] をクリックし、[テキスト入力] を選択します。フィールド名を text1 に、表示名を「テスト 1」に設定します。

  4. [コード] タブで、デフォルトのコードをこのサンドボックス化された JavaScript に置き換えます。

    let input = data.text1;
    return input.toUpperCase();
    
  5. [テスト] をクリックしてテストタブを開きます。

  6. [テストの追加] をクリックし、テスト名を「Untitled 1」から「文字列の処理」に変更します。

  7. 展開アイコン()をクリックして、テストのサンドボックス化された JavaScript エディタを表示します。コードをこのサンドボックス化された 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');
    

    このテストで文字列 'this is a test' を変数に渡し、変数が期待値である 'THIS IS A TEST' を返すことを確認します。runCode API を使用して、[コード] タブのテンプレート コードを実行します。runCode の引数は、データ グローバルとして使用されるオブジェクトです。assertThat API により、サブジェクトの値に関するアサーションをスムーズに行うために使用できるオブジェクトが返されます。

  8. [▶ テストを実行] をクリックしてテストを実行します。テストの出力がコンソールに表示されます。

    [▶ テストを実行] ボタンを押すと、テンプレート内の有効なすべてのテストが、表示された順序で実行されます。順序を変更するには、ドラッグ アイコン(⠿)を使用します。テスト名の左側にある丸をクリックすると、テストを一時的に有効または無効にできます。単体テストを実行するには、マウスをテストの上に移動したときに表示される ▶ ボタンをクリックします。

    コンソールに、実行したテストの合計数と、失敗したテストがある場合はその数が表示されます。この場合、テストが 1 つだけ実行され、合格しています。

  9. [テストを追加] をもう一度クリックして、2 つ目のテストを追加します。テストの名前を「Untitled test 2」から「Handles undefined」に変更します。

  10. テストをクリックして展開し、サンドボックス化された JavaScript エディタを表示します。エディタでサンドボックス化された JavaScript を入力します。

    let variableResult = runCode({});
    assertThat(variableResult).isEqualTo(undefined);
    
  11. [▶ テストを実行] をクリックして、すべてのテストを一度に実行します。テストの出力がコンソールに表示されます。

    「Handles undefined」テストは失敗します。これで、バグが見つかりました。

  12. [コード] をクリックして、テンプレートのサンドボックス化された JavaScript コードに戻り、編集します。サンドボックス化された JavaScript を次のように更新します。

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

    更新されたコードは、input 変数の検証のおすすめの方法を実施してから、使用します。

  13. [テスト] をクリックして、テストケースのリストに戻ります。

  14. [▶ テストを実行] をクリックして、すべてのテストケースを再度実行します。今回は「Handles undefined」のテストは合格するはずです。

  15. [保存] をクリックし、テンプレート エディタを閉じます。