QA@IT

mountable な rails plugin のテストの書き方

2954 PV

mountable な rails plugin の作成を試してみようと思って http://stackoverflow.com/questions/8507798/rails-3-1-plugin-gem-dummy-test-app-rspec を参考にして、以下のようにしてみたのですが、 rake test でも rake spec で何も実行されなくて困っています。
プラグインのテストはどう書いてどう実行するものなのでしょうか?

  • rails plugin new hoge --mountable --skip-test-unit --dummy-path=spec/dummy
  • gemspec に s.add_development_dependency "rspec-rails" を追加
cd spec/dummy
ln -s ../../spec
rails generate rspec:install
cd -
  • spec/spec_helper.rbrequire File.expand_path("../../config/environment", __FILE__)require File.expand_path("../dummy/config/environment", __FILE__) に変更

ここまでが stackoverflow を参考にした手順です。

  • ここから bundle exec rails g scaffold post title body:text published:boolean などで generate すると spec ではなく test が generate されてしまいます。
  • bundle exec rails g rspec:scaffold posts で spec を無理矢理作成しても bundle exec rake spec は正常終了するのに spec は何も実行されません。
  • bundle exec rake test も同様に正常終了するのに何も実行されません。
  • bundle exec rake -T でテスト関係のものは何も出てきません。

回答

個人的にはプラグイン作るときに、spec のシンボリックリンクを作ったり、scaffold 使ったり、rake spec 使ったりはしていなかったので、わからない部分もあるのですが、

rails g rspec:scaffold posts

で spec 作成後、

cd spec/dummy
# dummy に migration をコピー
rake hoge:install:migrations
rake db:migrate
rake spec

でテストできます。プラグインのディレクトリでは rake spec は動きませんが、rspec spec なら問題ありません。

ただし scaffold で作成した spec はプラグインの名前空間 (この場合 Hoge) が抜けていたり、view のパスが不十分 (hoge/ を補う必要がある) だったりと、結構修正する必要はあります。

参考:
Ruby on Rails Guides: Getting Started with Engines
http://guides.rubyonrails.org/engines.html

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。