おやまのエンジニアリングブログ

某ゲーム開発会社のフルスタックエンジニアしてます

Rails PluginでRspecを使う環境の構築方法

Railsプラグインのテストを書くのに、rspecを使いたかったので実装方法をまとめました。

1. まず、railsのジェネレーターを使ってファイルを一式作成。
とりあえず、クラス名はMyGemにします。

rails plugin new my_gem --skip-test-unit --dummy-path=spec/dummy

2. my_gem.gemspec のTODOと書いてある部分を埋めて以下の行を追加する

s.add_development_dependency "rspec-rails"

3. 以下のコマンドを実行

bundle install
cd ./spec/dummy
rails g rspec:install
ln -s ../../spec

4. 自動生成されたspec/spec_helper.rbの以下の部分を

require File.expand_path("../../config/environment", __FILE__)

以下に変更

require File.expand_path("../dummy/config/environment", __FILE__)

5. rakeコマンドでテストが実行されるようにRakeFileに以下を追加する

require 'rspec/core/rake_task'

RSpec::Core::RakeTask.new(:spec)
task :default => :spec

6. rakeコマンドを叩いて以下の情報が出れば成功

No examples found.

Finished in 0.00005 seconds
0 examples, 0 failures

7. あとは./rspec/配下もしくはサブディレクトリに *_rspec.rb という名前でテストファイルを配置すれば、それが実行されるはず。

Rails Engineを使う場合は、generatorをrspecに変更した方がいいかも

module MyGem
  class Engine < ::Rails::Engine
    isolate_namespace MyGem

    config.generators do |g|
      g.test_framework :rspec
    end
  end
end