Ruby on rails 如何让Rspec2以不同的方式支持型号和规格?

Ruby on rails 如何让Rspec2以不同的方式支持型号和规格?,ruby-on-rails,rspec,models,Ruby On Rails,Rspec,Models,我有两个rails项目,它们通过git子模块共享相同的模型(一个公共网站和一个管理网站) 在我的application.rb文件中,我添加了以下行:config.autoload_paths+=[“shared/models”,“shared/lib”],这在运行Rails应用程序时效果很好,但是当我尝试运行specs时,似乎会首先加载routes.rb文件,然后是application.rb文件-这意味着规格错误-尤其是Desive 除此之外,Rspec不会在共享/规范路径中拾取规范-是否有任

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

在我的
application.rb
文件中,我添加了以下行:
config.autoload_paths+=[“shared/models”,“shared/lib”]
,这在运行Rails应用程序时效果很好,但是当我尝试运行specs时,似乎会首先加载
routes.rb
文件,然后是
application.rb
文件-这意味着规格错误-尤其是Desive

除此之外,Rspec不会在共享/规范路径中拾取规范-是否有任何方法将此路径添加到规范任务中,例如我是否需要设置自己的Rspec.rake文件来复制任务或类似的内容


干杯

要加载共享/模型,您必须将其添加到config.autoload_路径

然后,要从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 
对于其他感兴趣的人,请注意,如果您的等级库文件位于普通等级库文件夹中,但位于自定义子文件夹下,则可以按如下方式加载:


config.include RSpec::Rails::ModelExampleGroup, :type => :model, :example_group => {
  :file_path => config.escaped_path(%w[spec shared models])
}  
PS:我建议将共享代码或模块放入gem中,然后在两个项目中使用它们。通过这种方式,gem包含自己的测试,并且从多个项目中引用它更容易、更有组织