JavaScript 单元测试¶
编写单元测试与编写代码本身同样重要:它有助于确保代码按照既定规范编写,并在演进过程中保持正确。
Testing Framework¶
测试代码始于测试框架。框架提供了一个抽象层,以便以简洁高效的方式编写测试。它还提供了运行测试、进行断言并报告结果的一系列工具。
Odoo 开发者使用了一个自研的测试框架 HOOT。使用自定义框架的主要原因是它可以按我们的需求扩展(标签系统、全局对象模拟等)。
在该框架之上,我们构建了一组帮助编写 Web 客户端测试的工具(web_test_helpers),以及一个模拟服务端的 mock 服务器(mock_server)。
以下可以找到这些各部分的参考链接,以及一个包含编写测试示例与最佳实践的章节。
设置¶
在学习如何编写测试之前,最好从基础开始。以下步骤可确保您的测试文件被测试运行器正确拾取。
请注意,在现有插件中,这些步骤大多可以跳过,因为相应的文件夹结构和资产包可能已经配置好。
在正确的 位置 编写文件:
所有 JavaScript 测试文件都应放在相关插件的
/static/tests目录下(例如/web/static/tests/env.test.js)。使用正确的 名称 :
测试文件必须以
.test.js结尾。这不仅是约定,而且是让测试文件被运行器拾取的要求。所有其他 JavaScript 文件都将被解释为生产代码(即待测代码)或测试辅助文件(如 web_test_helpers)。注解
值得注意的是,
.hoot.js文件是一个例外,它们不被视为测试文件,而是整个测试运行的全局模块,而其他 JavaScript 模块会为每个测试套件重新创建。由于这些模块的同一实例将贯穿整个测试运行,因此它们遵循严格的约束,例如限制导入,或使用高级内存管理技术以确保没有副作用影响测试。在正确的 包 中调用文件:
放置在正确文件夹中的测试文件必须包含在
web.assets_unit_tests包中。为方便使用,可以使用 glob 语法导入所有测试和测试辅助文件:# Unit test files 'web.assets_unit_tests': [ 'my_addon/static/tests/**/*', ],
访问正确的 URL :
要运行测试,然后可以访问
/web/testsURL。小技巧
此页面可通过 访问。
Writing tests¶
创建并包含测试文件后,即可开始编写测试。您可以参考以下文档章节了解测试框架。