2011-01-20 130 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