这些单元测试针对的是 Google 跟踪代码管理器的自定义模板,可帮您验证自己模板的功能。您可以为每个模板创建一组无需部署代码即可运行的测试,这样您就可在开发过程中持续测试模板的行为。每次测试都会提供示例输入值、模拟函数调用和断言代码行为。
限制
- 单元测试不会检查验证规则,但您可以使用运行代码按钮手动检查验证。
- 在单元测试中,权限检查不会发生在模拟的 API 上。
本指南将向您逐步介绍如何编写自定义模板的单元测试。本示例创建了一个变量模板,该模板会接受输入字符串,然后返回该字符串的大写形式。
创建新的变量模板。点击左侧导航栏中的模板,然后点击变量模板部分下的新建。
点击字段。
点击添加字段,然后选择文本输入。将该字段命名为
text1
,然后将显示名设置为“Text 1”。在代码标签中,将默认代码替换为下列在沙盒中运行的 JavaScript:
let input = data.text1; return input.toUpperCase();
点击测试以打开测试标签。
点击添加测试,然后将测试名称从“Untitled test 1”更改为“Handles strings”。
点击展开图标 (expand_more),即可查看该测试的在沙盒中运行的 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 会返回一个对象,可用于顺畅地对主题的值进行断言。点击 ▶ 运行测试可运行测试。测试的输出将显示在控制台中。
点击 ▶ 运行测试按钮后,系统就会以显示的顺序运行该模板中启用的所有测试。如要更改该顺序,请使用拖动图标 (⠿)。点击测试名称左侧的圆圈,可暂时启用或停用相应测试。要运行单个测试,您可以将鼠标移动到该测试上方,然后点击显示的 ▶ 按钮。
控制台应输出运行的总测试数和失败的测试数(如果有)。在本测试用例中,仅运行了一个测试,该测试应该会通过。
再次点击添加测试,添加第二个测试。将该测试名称从“Untitled test 2”更改为“Handles undefined”。
点击该测试即可将其展开,并显示在沙盒中运行的 JavaScript 编辑器。在编辑器中输入在沙盒中运行的 JavaScript:
let variableResult = runCode({}); assertThat(variableResult).isEqualTo(undefined);
点击 ▶ 运行测试,以便一次性运行所有测试。测试的输出将显示在控制台中。
“Handles undefined”测试应会失败。恭喜,您发现了一个 bug!
点击代码,以返回并修改该模板的在沙盒中运行的 JavaScript 代码。更新在沙盒中运行的 JavaScript,如下所示:
const getType = require('getType'); let input = data.text1; if (getType(input) !== 'string') { return input; } return input.toUpperCase();
更新后的代码遵循了代码使用前
input
变量的最佳验证做法。点击测试返回测试用例列表。
点击 ▶ 运行测试,再次运行所有测试用例。这次,“Handles undefined”测试应会通过。
点击保存,然后关闭“模板编辑器”。