JavaScript 单元测试¶
与编写代码本身一样,编写单元测试同样重要:它有助于确保代码按给定规范编写,并在演进过程中保持正确。
测试框架¶
测试代码从测试框架开始。该框架提供了一层抽象,使得以简单高效的方式编写测试成为可能。它还提供了一组工具来运行测试、进行断言并报告结果。
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/tests网址来运行测试。小技巧
可以通过 访问此页面。
编写测试¶
创建并添加测试文件之后,就可以编写测试了。你可以参阅以下文档章节来了解测试框架。