如何防止RSpec在生成的规范中使用“Rspec.describe ...”和“type:...”?

时间:2014-11-18 07:08:56

标签: ruby-on-rails rspec rspec3 rails-generators

自升级到RSpec 3以来,我生成的规范文件包含RSpec.describe而不仅仅是describe,并明确包含类型,例如:type => :model。例如,这里是为名为“Plan”的类生成的模型spec文件:

require 'rails_helper'

RSpec.describe Plan, :type => :model do
  pending "add some examples to (or delete) #{__FILE__}"
end

我宁愿让它看起来像这样(注意第3行的变化):

require 'rails_helper'

describe Plan do
  pending "add some examples to (or delete) #{__FILE__}"
end

...“类型”调用似乎特别多余,因为config.infer_spec_type_from_file_location!中有rails_helper行。

如何让RSpec生成看起来像我的第二个示例的spec文件?我不想每次都手动编辑它。

1 个答案:

答案 0 :(得分:4)

如果查看rspec-rails github repo中的模板,您可以看到没有选项可以通过配置变量执行此操作。但是,您应该只需在lib/generators/rspec/model/templates/中创建一个名为model_spec.rb的文件来自定义它,以便为您的模型创建自定义生成器。它只是一个erb模板,您可以在上面的链接中看到:

require 'rails_helper'

<% module_namespacing do -%>
RSpec.describe <%= class_name %>, :type => :model do
  pending "add some examples to (or delete) #{__FILE__}"
end
<% end -%>

您应该可以轻松地自定义Rspec使用此方法定义的任何生成器。 Yoe甚至可以添加额外的东西。其他信息是here。希望这有助于你:)