ruby-on-rails – 在Rails 3中自定义Rspec生成器
发布时间:2020-12-17 03:53:19 所属栏目:百科 来源:网络整理
导读:我正在编写Rails 3.1引擎并使用RSpec 2进行测试.当我使用rails generate时,我会自动为我生成spec文件,这非常方便: $rails g model Foo invoke active_record create db/migrate/20111102042931_create_myengine_foos.rb create app/models/myengine/foo.rb
我正在编写Rails 3.1引擎并使用RSpec 2进行测试.当我使用rails generate时,我会自动为我生成spec文件,这非常方便:
$rails g model Foo invoke active_record create db/migrate/20111102042931_create_myengine_foos.rb create app/models/myengine/foo.rb invoke rspec create spec/models/myengine/foo_spec.rb 但是,为了使生成的规范与我的隔离命名空间很好地配合,我必须每次在模块中手动包装规范: require 'spec_helper' module MyEngine describe Foo do it "should be round" ... end end 我很想知道是否有一种干净简单的方法来修改自动生成的规范’模板’,这样我就不必在每次生成新模型或控制器时将模块包含在模块MyEngine中. 解决方法
您可以使用Rake任务复制RSpec的模板,例如:
namespace :spec do namespace :templates do # desc "Copy all the templates from rspec to the application directory for customization. Already existing local copies will be overwritten" task :copy do generators_lib = File.join(Gem.loaded_specs["rspec-rails"].full_gem_path,"lib/generators") project_templates = "#{Rails.root}/lib/templates" default_templates = { "rspec" => %w{controller helper integration mailer model observer scaffold view} } default_templates.each do |type,names| local_template_type_dir = File.join(project_templates,type) FileUtils.mkdir_p local_template_type_dir names.each do |name| dst_name = File.join(local_template_type_dir,name) src_name = File.join(generators_lib,type,name,"templates") FileUtils.cp_r src_name,dst_name end end end end end 然后,您可以修改#{Rails.root} /lib/templates/rspec/model/model_spec.rb中的代码以包含模块名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |