如何更改rspec的测试路径?

时间:2014-02-20 03:30:06

标签: ruby-on-rails rspec ruby-on-rails-4 rspec-rails

我的admin应用程序中有一个带有rspec的host引擎。这是我的应用程序结构:

Structure of my application

这是我的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配置。有什么想法吗?

1 个答案:

答案 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文件