Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Các thử nghiệm đơn vị cho mẫu tuỳ chỉnh trong Trình quản lý thẻ của Google giúp bạn xác thực chức năng của mẫu. Bạn có thể tạo một tập hợp các bài kiểm thử cho từng mẫu
có thể chạy mà không cần triển khai thẻ, cho phép bạn
liên tục kiểm tra hành vi của mẫu trong quá trình phát triển. Mỗi thử nghiệm có thể
cung cấp các giá trị đầu vào mẫu, mô phỏng lệnh gọi hàm và xác nhận hành vi của mã.
Các điểm hạn chế
Hoạt động kiểm thử đơn vị không kiểm tra các quy tắc xác thực, nhưng bạn có thể kiểm tra xác thực theo cách thủ công bằng nút Run Code (Chạy mã).
Quá trình kiểm tra quyền không xảy ra trên các API mô phỏng trong các bài kiểm thử đơn vị.
Hướng dẫn này sẽ chỉ cho bạn cách viết chương trình kiểm thử đơn vị cho mẫu tuỳ chỉnh của bạn. Ví dụ này tạo một mẫu biến lấy chuỗi dữ liệu đầu vào rồi trả về
phiên bản viết hoa của chuỗi đó.
Tạo mẫu biến mới. Nhấp vào Mẫu trong thanh điều hướng bên trái, rồi nhấp vào Mới trong mục Mẫu biến.
Nhấp vào Trường.
Nhấp vào Thêm trường rồi chọn Nhập văn bản. Đặt tên cho trường text1 và đặt tên hiển thị thành "Text 1" (Văn bản 1).
Trong thẻ Code (Mã), hãy thay thế mã mặc định bằng JavaScript hộp cát sau:
let input = data.text1;
return input.toUpperCase();
Nhấp vào Kiểm thử để mở thẻ kiểm thử.
Nhấp vào Thêm hoạt động kiểm thử rồi thay đổi tên kiểm thử từ "Thử nghiệm không có tiêu đề 1" thành "Xử lý chuỗi".
Nhấp vào biểu tượng mở rộng (expand_more) để hiển thị trình chỉnh sửa JavaScript trong hộp cát của thử nghiệm. Thay thế mã bằng JavaScript hộp cát sau:
//CallrunCodetorunthetemplate's code with a lowercase stringletvariableResult=runCode({text1:'this is a test'});//ValidatethattheresultofrunCodeisanuppercasestring.assertThat(variableResult).isEqualTo('THIS IS A TEST');
Quy trình kiểm thử này sẽ chuyển chuỗi 'this is a test' đến biến và xác minh rằng biến đó trả về giá trị dự kiến của 'THIS IS A TEST'. API runCode dùng để chạy mã mẫu trong thẻ Code (Mã). Đối số cho runCode là một đối tượng được dùng làm dữ liệu toàn cục. API assertThat trả về một đối tượng có thể dùng để đưa ra xác nhận về giá trị của một đối tượng một cách trôi chảy.
Nhấp vào ▶ Run Tests (Chạy kiểm thử) để chạy kiểm thử. Kết quả kiểm thử sẽ xuất hiện trong Console (Bảng điều khiển).
Nút ▶ Run Tests (Chạy kiểm thử) chạy tất cả các kiểm thử đã bật trong mẫu theo thứ tự được hiển thị. Để thay đổi thứ tự, hãy sử dụng biểu tượng kéo (⠿). Bạn có thể tạm thời bật hoặc tắt thử nghiệm bằng cách nhấp vào vòng tròn ở bên trái tên thử nghiệm. Để chạy một kiểm thử đơn lẻ, nhấp vào nút ▶ xuất hiện khi bạn di chuột qua kiểm tra.
Bảng điều khiển sẽ in tổng số lượt kiểm thử đã chạy và số lượt kiểm thử không thành công (nếu có). Trong trường hợp này, chỉ có một lượt kiểm thử được chạy và có kết quả thành công.
Nhấp vào Add Test (Thêm thử nghiệm) lần nữa để thêm lượt kiểm thử thứ hai. Thay đổi tên của kiểm thử từ "Không có tiêu đề 2" thành "Tên người dùng không xác định".
Nhấp vào kiểm thử đó để mở rộng và hiển thị trình chỉnh sửa JavaScript hộp cát. Nhập JavaScript dạng hộp cát vào trình chỉnh sửa:
Mã mới cập nhật tuân theo phương pháp hay nhất để xác thực biến input trước khi sử dụng.
Nhấp vào Tests (Kiểm thử) để quay lại danh sách trường hợp kiểm thử.
Nhấp vào ▶ Run Tests (Chạy thử nghiệm) để chạy lại tất cả các trường hợp kiểm thử. Lần này, kết quả kiểm thử Tên người dùng không xác định sẽ thành công.
[null,null,["Cập nhật lần gần đây nhất: 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."]]