RSpecRails
RSpecRails/AvoidSetupHook
默认启用 | 安全 | 支持自动修正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
始终 |
2.4 |
- |
检查测试是否使用 RSpec before
钩子而不是 Rails setup
方法。
RSpecRails/HaveHttpStatus
默认启用 | 安全 | 支持自动修正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
始终(不安全) |
2.12 |
2.27 |
检查测试是否使用 have_http_status
而不是相等匹配器。
RSpecRails/HttpStatus
默认启用 | 安全 | 支持自动修正 | 添加版本 | 更改版本 |
---|---|---|---|---|
启用 |
是 |
始终 |
1.23 |
2.20 |
强制使用符号或数字值来描述 HTTP 状态。
此 cop 仅检查 have_http_status
调用。因此,当为 EnforcedStyle: symbolic
或 EnforcedStyle: numeric
设置时,此 cop 不会检查是否使用了以 be_*
开头的 方法。
示例
EnforcedStyle: symbolic
(默认)
# bad
it { is_expected.to have_http_status 200 }
it { is_expected.to have_http_status 404 }
it { is_expected.to have_http_status "403" }
# good
it { is_expected.to have_http_status :ok }
it { is_expected.to have_http_status :not_found }
it { is_expected.to have_http_status :forbidden }
it { is_expected.to have_http_status :success }
it { is_expected.to have_http_status :error }
EnforcedStyle: numeric
# bad
it { is_expected.to have_http_status :ok }
it { is_expected.to have_http_status :not_found }
it { is_expected.to have_http_status "forbidden" }
# good
it { is_expected.to have_http_status 200 }
it { is_expected.to have_http_status 404 }
it { is_expected.to have_http_status 403 }
it { is_expected.to have_http_status :success }
it { is_expected.to have_http_status :error }
EnforcedStyle: be_status
# bad
it { is_expected.to have_http_status :ok }
it { is_expected.to have_http_status :not_found }
it { is_expected.to have_http_status "forbidden" }
it { is_expected.to have_http_status 200 }
it { is_expected.to have_http_status 404 }
it { is_expected.to have_http_status "403" }
# good
it { is_expected.to be_ok }
it { is_expected.to be_not_found }
it { is_expected.to have_http_status :success }
it { is_expected.to have_http_status :error }
RSpecRails/InferredSpecType
默认启用 | 安全 | 支持自动修正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
否 |
始终(不安全) |
2.14 |
- |
识别冗余的规范类型。
在设置 rspec-rails 后,您将默认在 spec/rails_helper.rb 中启用 config.infer_spec_type_from_file_location!
。此 cop 与此配置协同工作。如果您禁用了此配置,也请禁用此 cop。
示例
# bad
# spec/models/user_spec.rb
RSpec.describe User, type: :model do
end
# good
# spec/models/user_spec.rb
RSpec.describe User do
end
# good
# spec/models/user_spec.rb
RSpec.describe User, type: :common do
end
Inferences
配置
# .rubocop.yml
# RSpecRails/InferredSpecType:
# Inferences:
# services: service
# bad
# spec/services/user_spec.rb
RSpec.describe User, type: :service do
end
# good
# spec/services/user_spec.rb
RSpec.describe User do
end
# good
# spec/services/user_spec.rb
RSpec.describe User, type: :common do
end
可配置属性
名称 | 默认值 | 可配置值 |
---|---|---|
Inferences |
|
RSpecRails/MinitestAssertions
默认启用 | 安全 | 支持自动修正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
始终 |
2.17 |
- |
检查是否使用 Minitest 样式的匹配器。
检查是否使用以 assert_
或 refute_
开头的 Minitest 样式的匹配器。
示例
# bad
assert_equal(a, b)
assert_equal a, b, "must be equal"
assert_not_includes a, b
refute_equal(a, b)
assert_nil a
refute_empty(b)
assert_true(a)
assert_false(a)
# good
expect(b).to eq(a)
expect(b).to(eq(a), "must be equal")
expect(a).not_to include(b)
expect(b).not_to eq(a)
expect(a).to eq(nil)
expect(a).not_to be_empty
expect(a).to be(true)
expect(a).to be(false)