如何让Rspec2在不同的路径中支持模型和规范?

时间:2011-02-10 08:21:16

标签: ruby-on-rails rspec models

我有两个通过git子模块共享相同模型(公共网站和管理站点)的rails项目。

在我的application.rb文件中,我添加了以下行:config.autoload_paths += ["shared/models", "shared/lib"],这在运行Rails应用程序时运行正常,但是当我尝试运行规范时,似乎加载了{{1}首先是文件,然后是routes.rb文件 - 这意味着规格错误输出 - 特别是设计时。

除此之外,Rspec不会在共享/规范路径中获取规范 - 有没有办法将此路径添加到规范任务,就像我需要设置自己的rspec.rake文件复制任务或其他东西那样的?

干杯

1 个答案:

答案 0 :(得分:3)

要加载共享/模型,您必须将其添加到config.autoload_paths。

然后从shared / spec加载您的规范,将其添加到spec_helper.rb:


shared_model_specs = config.filename_pattern.split(",").collect do |pattern|
  Dir["shared/spec/models/#{pattern.strip}"]
end.flatten
config.files_to_run.concat shared_model_specs 

对于其他感兴趣的人来说,如果您的规范文件位于正常的spec文件夹中,但在自定义的子文件夹下,您可以像这样加载它:


config.include RSpec::Rails::ModelExampleGroup, :type => :model, :example_group => {
  :file_path => config.escaped_path(%w[spec shared models])
}  

PS:我建议将共享代码或模块放入gem中,然后在两个项目中使用它们。这样,gem包含自己的测试,并且从多个项目中引用它更加容易和有条理。