RSpec/Rails
RSpec/Rails/AvoidSetupHook
RSpec/Rails/HaveHttpStatus
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Pending |
Yes |
Always (Unsafe) |
2.12 |
2.27 |
Checks that tests use have_http_status
instead of equality matchers.
Examples
RSpec/Rails/HttpStatus
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Enabled |
Yes |
Always |
1.23 |
2.20 |
Enforces use of symbolic or numeric value to describe HTTP status.
This cop inspects only have_http_status
calls.
So, this cop does not check if a method starting with be_*
is
used when setting for EnforcedStyle: symbolic
or
EnforcedStyle: numeric
.
Examples
EnforcedStyle: symbolic
(default)
# 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 }
RSpec/Rails/InferredSpecType
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Pending |
No |
Always (Unsafe) |
2.14 |
- |
Identifies redundant spec type.
After setting up rspec-rails, you will have enabled
config.infer_spec_type_from_file_location!
by default in
spec/rails_helper.rb. This cop works in conjunction with
this config.
If you disable this config, disable this cop as well.
Safety
This cop is marked as unsafe because
config.infer_spec_type_from_file_location!
may not be enabled.
Examples
# 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
configuration
# .rubocop.yml
# RSpec/Rails/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
Configurable attributes
Name | Default value | Configurable values |
---|---|---|
Inferences |
|
RSpec/Rails/MinitestAssertions
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Pending |
Yes |
Always |
2.17 |
- |
Check if using Minitest-like matchers.
Check the use of minitest-like matchers
starting with assert_
or refute_
.
Examples
# 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)
RSpec/Rails/NegationBeValid
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Pending |
No |
Always (Unsafe) |
2.23 |
- |
Enforces use of be_invalid
or not_to
for negated be_valid.
Safety
This cop is unsafe because it cannot guarantee that
the test target is an instance of ActiveModel::Validations`
.
Examples
RSpec/Rails/TravelAround
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Pending |
No |
Always (Unsafe) |
2.19 |
- |
Prefer to travel in before
rather than around
.