2011-01-20 26 views
0

acts_as_taggable_on gemとmonkeypatching ActsAsTaggableOn::Tagをインテイタイザー(config/initializers/acts_as_taggable_on.rb)で使用しています。私のコードの仕様を書いてspec/models/tag.rbに入れましたが、rspec specまたはautotestを実行すると、そのファイルは実行される仕様に含まれていません。また、定数階層(spec/models/acts_as_taggable_on/tag.rb)と一致するようにディレクトリに配置しようとしましたが、まだ実行されませんでした。 RSpecにこの仕様ファイルを認識させるにはどうすればよいですか?私はRails 3.0.3とRSpec 2.4.0を使っています。RSpecを使用してmodelsフォルダにないモデルをテストするにはどうすればよいですか?

答えて

1

スペックファイルの名前をtag_spec.rbとする必要があります。 Rspecはすべてのスペックファイルが_spec.rbで終了すると予想しています。このフォルダは、describeが何であるかを知るためにのみ関連しています(モデル、コントローラなど)。あなたの場合、私はそれは問題ではないと思う、私はspec/modelsフォルダの代わりにspec/libに配置します。

0

なぜこのファイルがconfigにありますか?これはlibディレクトリに属します。これは、自分のコードでappディレクトリに「適合」しないためです。テストで "spec_helper"が必要な場合、これはすべてのモデルをロードするRails環境をロードするので、モデルが必要とするすべてのファイル(これは重要な部分です)をテストすることができます。

+0

私は私の質問にタイプミスがありました。コードは 'config'だけでなく' config/initializers'にあります。私も 'lib'に入れてみました。 'lib'にコードがあると、monkeypatchに依存しているテストは失敗しましたが、' config/initializers'に入っていればパスします。 'lib'が' config/application.rb'の自動ロードパスに追加されていることを確認しました。 –

+0

クラスを再オープンすると、 'config/initializers'が実際に正しい場所になります。 – nathanvda

関連する問題