包含rspec描述块中的类型有什么作用?

时间:2017-07-10 23:14:31

标签: ruby-on-rails rspec

我不认为type部分是必要的,它实际上做了什么?

RSpec.describe Auction, :type => :model do

1 个答案:

答案 0 :(得分:5)

type元数据是包含正确的rspec-rails支持功能所必需的。可以有不同的规范类型,包括controllerviewhelpermailer等。从here了解更多信息。模型规范更具体地描述为here

注意: 3.0.0之前的RSpec版本会根据文件系统中的位置自动将元数据添加到规范中。在RSpec3中,必须在配置中单独定义此行为:

​# spec/rails_helper.rb
RSpec.configure do |config|
  config.infer_spec_type_from_file_location!
end

因此 - 如果您使用的是RSpec 3,那么在没有上层配置的情况下,您无法在创建规范时忽略类型声明。

还可以定义您自己的自定义元数据类型,如下所示:

​# set `:type` for serializers directory
RSpec.configure do |config|
  config.define_derived_metadata(:file_path => Regexp.new('/spec/serializers/')) do |metadata|
    metadata[:type] = :serializer
  end
end