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

问题描述 投票:0回答:1

我认为

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

RSpec.describe Auction, :type => :model do
ruby-on-rails rspec
1个回答
17
投票

type
元数据对于包含正确的 rspec-rails 支持功能是必需的。可以有不同的规格类型,包括
controller
view
helper
mailer
等。从 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
© www.soinside.com 2019 - 2024. All rights reserved.