导入
测试入门
测试简介、Rails 测试结构以及如何运行 Rails 测试。
什么是测试?
测试是一种用于确保你的应用程序按照预期要求运行的过程。对于你的 Web 应用程序,测试可以包括检查无效重定向、表单字段的验证、数据完整性等。
Rails 测试结构
每当使用 rails new 创建新项目时,系统会自动为你创建一个 test 文件夹。该文件夹的结构如下所示:
| 文件/文件夹 | 用途 |
|---|---|
controllers/ | 存放控制器、路由和视图的测试 |
helpers/ | 存放视图助手的测试 |
mailers/ | 存放邮件发送器的测试 |
models/ | 存放模型的测试 |
system/ | 存放系统测试,支持浏览器级别的测试——帮助你了解用户实际使用应用的方式 |
integration/ | 存放控制器之间交互的测试 |
fixtures/ | 存放所有应用的 fixtures 数据,这些数据会在功能测试和单元测试中自动加载 |
application_system_test_case.rb | 存放系统测试的默认配置 |
test_helper.rb | 存放测试的默认配置 |
运行 Rails 测试
Rails 中的测试通过 rails test 命令来执行。直接使用 rails test 会一次性运行所有测试。
若要运行特定测试,可使用以下命令:
1rails test test/controllers/links_controller_test.rb
你需要向 rails test 提供包含目标测试的文件路径。上述示例中,文件为 links_controller_test.rb,并提供了完整路径。
假设你在 test/controllers/links_controller_test.rb 文件中有一个名为 sample_method 的测试方法,想要单独运行它,可以使用:
1rails test test/controllers/links_controller_test.rb --name test_sample_method
运行任意测试后,输出结果可能如下:
1# Running: 2. 3 4Finished tests in 0.009064s, 110.3266 tests/s, 110.3266 assertions/s. 5 61 tests, 1 assertions, 0 failures, 0 errors, 0 skips
其中的点 . 表示正在运行的测试数量,并表示该测试已成功通过。
如果测试失败,输出将如下所示:
1# Running: 2F 3 4Failure: 5LinkTest#sample_test_method[/test/models/link_test.rb]: 6Expected true to be nil or false 7 8 9rails test test/models/link_test.rb 10 11 12 13Finished in 0.023918s, 41.8090 runs/s, 41.8090 assertions/s. 14 151 runs, 1 assertions, 1 failures, 0 errors, 0 skips
这里的 F 而非 . 表示测试失败。