菜单

测试

相关源文件

目的与范围

本文档涵盖了 anime.js 库的测试基础设施和流程。它解释了如何在浏览器和 Node.js 环境中运行测试,所使用的测试工具,并概述了测试架构。有关从源代码构建库的信息,请参阅从源代码构建

来源: package.json42-60

测试框架和工具

Anime.js 结合使用了行业标准的 JavaScript 测试工具

工具目的版本
Mocha用于运行测试套件的测试框架10.2.0
Chai用于编写测试断言的断言库4.3.10
Browser-sync用于基于浏览器的自动重载测试工具2.29.3

这些工具为在不同 JavaScript 环境中测试同步和异步动画行为提供了坚实的基础。

来源: package.json42-60

测试架构

anime.js 的测试基础设施旨在验证库在浏览器和 Node.js 环境中的功能,确保跨平台兼容性。

来源: package.json59-60

测试环境

Anime.js 采用双环境测试策略,以确保库在不同 JavaScript 上下文中正常运行。

浏览器测试

浏览器测试验证了库在真实 DOM 环境中的功能,测试 CSS 动画、SVG 操作和视觉效果。测试通过位于 tests/index.html 的 HTML 测试运行器执行。

Browser-sync 提供了一个开发服务器,当 JavaScript 文件发生更改时会自动刷新,从而促进高效的测试驱动开发工作流程。

来源: package.json59

Node.js 测试

Node.js 测试侧重于库的核心功能,这些功能应在浏览器环境之外工作,例如时间轴计算、对象动画和内部动画引擎。这些测试使用位于 tests/suites/node.test.js 的特定测试文件。

Node.js 测试使用 Mocha 的 TDD(测试驱动开发)风格,并包含 20 秒的宽裕超时时间,以适应可能需要更长时间才能完成的动画。

来源: package.json60

代码与测试集成

上图说明了测试文件如何与 anime.js 源代码组件接口,针对库中的特定功能进行测试。

来源: package.json59-60

运行测试

Anime.js 提供了两个用于运行测试的 npm 脚本

浏览器测试

在浏览器环境中运行测试

此命令启动一个指向 tests/index.html 的 browser-sync 服务器,并监视文件更改,当 JavaScript 文件被修改时自动刷新浏览器。

Node.js 测试

在 Node.js 环境中运行测试

此命令使用 Mocha 测试运行器执行 Node.js 特定的测试套件。测试使用 TDD 接口,并有 20 秒的超时时间,以适应复杂的动画序列。

来源: package.json59-60

测试组织

根据 npm 脚本,测试似乎按以下方式组织:

anime.js/
├── tests/
│   ├── index.html        # Browser test runner
│   ├── suites/
│   │   ├── node.test.js  # Node.js specific tests
│   │   └── ...           # Other test suites

浏览器测试可能涵盖:

  • DOM 操作
  • CSS 属性动画
  • SVG 动画
  • 视觉效果
  • 时间轴序列
  • 交错动画

Node.js 测试侧重于:

  • 核心动画引擎
  • JavaScript 对象动画
  • 时间轴计算
  • 缓动函数行为
  • 值插值

来源: package.json59-60

附加测试说明

  • 测试配置包括用于 Node.js 测试的 --allow-natives-syntax 标志,该标志允许访问 V8 引擎内部。这表明某些测试可能正在检查动画的性能或内存相关方面。
  • Browser-sync 配置了 --no-notify 标志,以提供更简洁的测试界面,而不会出现通知。
  • Browser-sync 启用了目录列表功能,允许通过浏览器导航测试文件。

来源: package.json59-60

贡献测试

在为 anime.js 贡献时,建议进行以下操作:

  1. 在提交拉取请求之前运行浏览器和 Node.js 测试
  2. 为任何新功能或错误修复添加新测试
  3. 确保测试在两个环境中都通过
  4. 考虑测试边缘情况和性能场景

有关项目贡献的更多信息,请参阅问题报告和功能请求

来源: package.json59-60