2011-01-20 65 views
0

我在intitializer(config/initializers/acts_as_taggable_on.rb)中使用acts_as_taggable_on寶石和monkeypatching ActsAsTaggableOn::Tag。我爲我的代碼編寫了一個規範並將其放入spec/models/tag.rb,但是當我運行rspec specautotest時,該文件未包含在運行的規格中。我也嘗試把它放在一個目錄中以匹配不變的層次結構(spec/models/acts_as_taggable_on/tag.rb),但它仍然沒有運行。我如何讓RSpec識別這個規格文件?我使用Rails 3.0.3和RSpec 2.4.0。如何測試不在RSpec模型文件夾中的模型?

回答

1

您應該將您的spec文件命名爲tag_spec.rb。 Rspec期望每個spec文件在_spec.rb結束。該文件夾僅與知道您的describe是關於什麼有關(模型,控制器...)。在你的情況下,我認爲這並不重要,我將它放在spec/lib而不是spec/models文件夾中。

0

這個文件爲什麼在config?它屬於lib目錄,因爲它是您自己的代碼,不適合app目錄。當您在測試中需要「spec_helper」時,會加載應該加載所有模型的Rails環境,因此會加載模型需要的所有文件(這是重要的部分),因此您可以用這種方式進行測試。

+0

我在我的問題中有一個錯字。代碼在`config/initializers`中,而不僅僅是`config`。我也試着把它放在`lib`中。當我有`lib`中的代碼時,依賴monkeypatch的測試都失敗了,但是當它在`config/initializers`中時通過。我驗證了`lib`正被添加到`config/application.rb`中的自動加載路徑中。 – 2011-01-20 06:55:49