SuperAPI AI 工具集

inertia-rails-testing

测试与质量

查看项目

更新于 10-16 10:54

技能介绍

用途

inertia-rails-testing 面向使用 Inertia Rails 的应用,用于指导如何编写测试。当需要为 Inertia 响应、组件、props、flash 消息和部分重载编写测试时使用。它同时覆盖 RSpec 和 Minitest 两种测试框架。

主要能力

技能文档给出了三类测试方式:

  • 端点测试:验证服务端的 Inertia 响应。
  • 客户端单元测试:使用 Vitest/Jest 测试组件。
  • 端到端测试:使用 Capybara 进行完整浏览器测试。

文档提供了 RSpec 与 Minitest 的配置方式和断言/匹配器参考,包括:be_inertia_response / assert_inertia_response、render_component / assert_inertia_component、have_props / assert_inertia_props、have_exact_props / assert_inertia_props_equal、have_flash / assert_inertia_flash、have_deferred_props / assert_inertia_deferred_props、have_no_prop / assert_no_inertia_prop、have_view_data / have_exact_view_data / assert_inertia_view_data。Minitest 还提供 refute_* 变体用于取反断言。

使用方式

RSpec:在 spec/rails_helper.rb 中添加 require 'inertia_rails/rspec'。

Minitest:在 test/test_helper.rb 中添加 require 'inertia_rails/minitest'。

文档包含完整示例,涵盖基础请求 spec(GET 列表、GET 详情、GET 新建、POST 创建、PATCH 更新、DELETE 删除)、共享数据测试(登录态下的 auth props)、部分重载测试(inertia_reload_only、inertia_reload_except)、延迟 props 测试(inertia_load_deferred_props)。Minitest 部分给出对应集成测试示例。

测试配置(v3)

默认情况下,可选 props 和延迟 props 在测试中不会被求值。可通过设置启用求值:

在 spec/rails_helper.rb(RSpec)或 test/test_helper.rb(Minitest)中设置:

InertiaRails::Testing.evaluate_optional_props = true

启用后即可测试延迟与可选 props 的实际值。

端到端与客户端测试

端到端测试示例使用 Capybara(driven_by(:selenium_chrome_headless)),演示创建用户、显示校验错误、以及无整页刷新的 SPA 导航验证。

客户端测试给出 Vue 的 Vitest 配置(vitest.config.js,环境为 jsdom)以及使用 @vue/test-utils 的组件挂载测试;React 部分使用 @testing-library/react 的 render 与 screen 查询。

最佳实践

文档列出五条:测试响应结构而非实现、使用工厂生成测试数据(FactoryBot)、测试授权结果、测试错误状态、以及使用共享示例(shared examples)处理通用模式。

适用场景

适用于在 Rails 项目中使用 Inertia 并需要编写服务端请求测试、Inertia props 与组件断言、部分重载与延迟 props 测试、端到端流程测试以及客户端组件测试的开发者。

限制

资料未说明该技能所支持的具体 Rails、Inertia、RSpec、Minitest 或前端框架版本要求(除配置小节标注 v3 外),也未提供价格、许可证或官方支持渠道等信息,这些内容暂未提供。