Rails 中的测试

2024 年 12 月 18 日 | 2 分钟阅读

Rails 测试的编写和运行非常简单。 就像 Rails 脚本生成模型和控制器一样,测试文件也会生成。 Rails 还为测试使用单独的数据库。 应用程序中的测试数据库在每次运行应用程序的测试时都会重建,因此在运行测试时,始终拥有一致的数据库。

Rails 使用 Ruby Test::Unit 测试库。 Rails 应用程序测试通常使用 Rake 实用程序运行。


Rails 测试目录

test 目录包含 Rails 生成的所有测试文件,用于构建应用程序的测试。测试目录具有以下目录结构。

Rails 主要支持三种类型的测试

  • 功能测试
  • 集成测试
  • 单元测试

测试目录中的 fixtures 允许您设置应用程序可以使用的测试数据。 它在编写 Rails 测试时节省了大量时间和精力。

对于编写测试,您必须首先编写代码来创建测试数据并将数据库置于已知的填充状态。 Rails fixtures 完成了大部分工作。

Mocks 是允许替换难以处理的依赖项的类。

功能测试: 功能测试用于测试应用程序的控制器方法。 当使用 script/generate 命令生成控制器类时,Rails 还会生成功能测试文件,这些文件将用于编写功能测试。

单元测试: 单元测试用于测试模型类中包含的方法。 这些测试主要用于测试模型中存在的业务逻辑。 它是 Rails 支持的最流行的测试形式。

集成测试: 集成测试允许测试多个控制器之间的交互。 它们允许测试来自应用程序的更完整的用户场景或案例。 使用它的另一个原因是它可以模拟用户点击和访问组成应用程序的各种页面。


Rails 测试生命周期

当 Rails 应用程序的测试运行时,每次都会遵循一个标准的生命周期。 此生命周期包括以下步骤

  • 加载测试 fixtures - 这将清除数据库表并将 fixtures 数据加载到数据库中。
  • 如果测试访问数据,则从数据库读取数据。
  • 测试运行后,数据库将回滚到其起始状态。

每次使用 Rake 命令运行测试时,Rails 都会执行整个生命周期。