RubyMine 2025.2 Help

RSpec

RSpec 是一个流行的行为驱动开发(BDD)框架,用于测试 Ruby/Rails 应用程序。 RubyMine 提供了许多 RSpec 支持功能,允许您运行测试、使用代码辅助、导航、重构等。

启用 RSpec 支持

  1. rspec-rails gem 添加到您的 Gemfile

  2. 按两次 Ctrl 打开 运行任何内容 弹窗。 使用 rails generate rspec:install 命令初始化 RSpec 并创建必要的文件和目录。

  1. rspec gem 添加到您的 Gemfile

  2. 按两次 Ctrl 打开 运行任何内容 弹窗。 使用 rspec --init 命令初始化 RSpec 并创建必要的文件和目录。

创建 RSpec 测试

RubyMine 提供了多种方式来创建 RSpec 测试。 您可以 从专用模板创建 RSpec 测试从需要测试的类生成测试 ,或者如果您正在开发 Rails 应用程序,可以 使用特定于框架的 Rails 生成器

从模板创建 RSpec 测试

  1. 请执行以下操作之一:

    • 项目工具窗口(Alt+1 )中,选择您希望创建新文件的 目录,然后从主菜单中选择 文件|新建

    • 右键单击 目录,然后从上下文菜单中选择 新建

    • 选择 目录,然后按 Alt+Insert

  2. 从列表中选择 Ruby 测试 并按 Enter

  3. 新建Ruby 测试 弹窗中,选择 RSpec ,指定描述的类名,然后按 Enter

    创建新的 RSpec 测试

    RubyMine 将创建一个包含初始内容的测试文件并在编辑器中打开它。 使用此文件作为模板并添加所需的代码。

    RSpec 模板编辑器

从测试对象创建 RSpec 测试

  1. 在编辑器中打开所需的类。

  2. 请前往 导航 | 测试 或按 Ctrl+Shift+T

    如果相应的测试不存在,将会出现 创建测试 弹窗。

    创建测试弹窗

    在此弹窗中,您可以选择以下选项之一:

    • 创建新测试 :为类创建一个新的测试,复制基于测试对象路径的目录结构。

    • 运行 'rails generate' :使用 Rails 生成器为类生成一个新的测试。

  3. 请选择 创建新测试 选项。

  4. 选择目标目录 对话框中,选择 规范 文件夹并单击 确定

    选择目标目录
  5. 在调用的弹窗中,选择 RSpec 模板并按 Enter

    新建测试弹窗

    RubyMine 将在必要的目录下创建一个新的 RSpec 测试,复制基于测试对象路径的目录结构。 例如,如果您正在创建一个模型测试,该测试将存储在 spec/models 目录下。

使用 Rails 生成器创建 RSpec 测试

  1. 转到 工具 | 运行 Rails 生成器Ctrl+Alt+G)。

  2. 在调用的弹窗中,开始输入所需的生成器名称。 例如,要创建一个 RSpec 模型测试,开始输入 rspec:model ,然后选择 rails g rspec:model。 按下 Enter

    创建新的 RSpec 模型测试
  3. 指定生成器参数。 例如,对于 User 模型,我们将 user 作为参数传递。 点击 确定

    添加新的 RSpec:model

代码补全

RubyMine 在 RSpec 文件中提供类名、变量、方法、共享示例和上下文等的代码补全功能。

在 RSpec 文件中代码补全

导航

导航到测试对象

  • 您可以通过按 Ctrl+Shift+T 或从主菜单中选择 导航(N) | 测试主体(E) 快速从 RSpec 测试导航到其测试对象。

转到声明或用法

RubyMine 支持在测试中使用的工厂、夹具、共享示例和共享上下文的声明与用法之间的导航。

  • 请执行以下操作之一:

    • 将光标放在 RSpec 测试中所需的符号上,然后按 Ctrl+B

    • 或者,使用 Ctrl+Click :按住 Ctrl 悬停在符号上。 当符号变为超链接时,其声明将显示在工具提示中。 按住键不放点击超链接,在编辑器中打开声明。

运行 RSpec 测试

RubyMine 允许您运行单个 RSpec 测试或指定文件夹或文件中的所有测试。 您还可以使用 Rake 任务运行测试。

从文件夹运行多个 RSpec 测试

  • Project 视图中,右键单击所需的文件夹并选择 运行 '所有功能在 ...'

    从项目视图运行测试

从编辑器运行 RSpec 测试

  • 打开所需的 RSpec 文件,然后单击您想要运行的测试旁边的 边栏图标。

  • 或者,将光标放在所需的测试上,按 Alt+Enter ,选择所需的运行操作,然后按 Enter

  • 如果您想运行与描述的测试对象相关的所有测试,请单击文件中 describe 方法旁边的 边栏图标,然后选择 运行 'RSpec: ...'

  • 您可以使用指示其状态的边栏图标重新运行特定测试: 运行测试图标 表示成功的测试,或 重新运行按钮 表示失败的测试。

  • 运行共享示例时,RubyMine 会建议选择一个上下文来执行此示例。 单击所需共享示例声明旁边的 边栏图标,然后选择 运行 'RSpec: ...'。 在出现的 运行示例组 弹窗中,选择执行共享示例所需的上下文。

使用 Rake 任务运行 RSpec 测试

  • 请按两次 Ctrl 调出 运行任何内容 弹窗。 开始输入所需的任务名称(它将以 rake spec 开头),从列表中选择它,然后按 Enter

    使用 Rake 运行 RSpec

当您使用上下文菜单或从编辑器运行 RSpec 测试时,RubyMine 会自动创建一个相应的 RSpec 临时配置 ,并可以保存。 如果需要,您可以从预定义模板中 手动创建 RSpec 运行/调试配置

欲了解更多信息,请参阅 运行/调试配置:RSpec

提取 RSpec 'let' 重构

提取 RSpec 'let' 重构允许您将指定的代码片段提取到一个带有记忆功能的辅助方法中。 为此,请执行以下步骤:

  1. 在 spec 文件中,选择所需的代码片段,然后从主菜单中选择 重构 | 提取/引入 | RSpec 'let' ⌘ ⇧ L

  2. 指定辅助方法的所需名称,然后按 Enter

  3. 如果找到多个代码片段的出现,RubyMine 将建议用辅助方法调用替换这些出现。

    提取方法

    单击 以替换找到的出现。 如果您只想替换选定的出现,请单击

示例

describe "GetTime" do it "gets the same time" do puts Time.now sleep(3) puts Time.now end end
describe "GetTime" do let(:current_time) { Time.now } it "gets the same time" do puts current_time sleep(3) puts current_time end end
最后修改日期: 2025年 9月 26日