我的admin
应用程序中有一个带有rspec的host
引擎。这是我的应用程序结构:
这是我的admin
引擎配置:
module Admin
class Engine < ::Rails::Engine
isolate_namespace Admin
engine_name 'admin'
config.generators do |g|
g.test_framework :rspec, fixture: false, view_specs: false
g.fixture_replacement :fabrication
g.fixture_replacement :factory_girl, dir: 'spec/factories'
g.integration_tool :rspec
g.assets false
g.helper false
end
end
end
当我在admin
引擎内创建新控制器时。我想在host
应用程序的spec/admin/controllers/welcome_controller_spec.rb
上生成控制器测试。我想我需要更改admin
引擎的rspec配置。有什么想法吗?
答案 0 :(得分:2)
在admin
项目的config/initializers
目录中,您可以创建一个猴子补丁来覆盖生成控制器规范文件的路径:
文件 /config/initializers/scaffold_generator.rb
require 'generators/rspec/scaffold/scaffold_generator'
module Rspec
module Generators
class ScaffoldGenerator
def generate_controller_spec
return unless options[:controller_specs]
template 'controller_spec.rb',
File.join('/path/to/host/project', 'spec/admin/controllers', controller_class_path, "#{controller_file_name}_controller_spec.rb")
end
end
end
end
用更动态的东西替换硬编码路径'/ path / to / host / project'会很聪明,因此当你在另一个位置移动工作区文件时它不会中断。我无法帮助你,因为它取决于你的项目文件结构,应该很容易做到。
要调用:
bundle exec rails generate scaffold_controller my_controller
将生成admin
项目中的控制器,帮助器,视图,rspec / helper和rspec / views文件,以及host
项目中的rspec / controller文件