1. ホーム
  2. ruby-on-rails

[解決済み】RSpecのテストを1つだけ実行するには?

2022-03-25 21:39:23

質問

以下のファイルがあります。

/spec/controllers/groups_controller_spec.rb

そのspecだけを実行するには、ターミナルでどのようなコマンドを使用し、どのディレクトリでコマンドを実行すればよいのでしょうか?

私のgemファイルです。

# Test ENVIRONMENT GEMS
group :development, :test do
    gem "autotest"
    gem "rspec-rails", "~> 2.4"
    gem "cucumber-rails", ">=0.3.2"
    gem "webrat", ">=0.7.2"
    gem 'factory_girl_rails'
    gem 'email_spec'
end

仕様ファイルです。

require 'spec_helper'

describe GroupsController do
  include Devise::TestHelpers

  describe "GET yourgroups" do
    it "should be successful and return 3 items" do

      Rails.logger.info 'HAIL MARRY'

      get :yourgroups, :format => :json
      response.should be_success
      body = JSON.parse(response.body)
      body.should have(3).items # @user1 has 3 permissions to 3 groups
    end
  end
end

解決方法は?

いつから利用できるようになったかは不明ですが、Rspecには実行フィルタリングのための設定があります。 spec_helper.rb :

RSpec.configure do |config|
  config.filter_run_when_matching :focus
end

そして、フォーカスタグを it , context または describe を実行すると、そのブロックだけが実行されます。

it 'runs a test', :focus do
  ...test code
end

RSpecのドキュメントです。

https://www.rubydoc.info/github/rspec/rspec-core/RSpec/Core/Configuration#filter_run_when_matching-instance_method