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