FactoryBot
FactoryBot/AssociationStyle
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
否 |
始终(不安全) |
2.23 |
2.24 |
使用一致的风格定义关联。
示例
EnforcedStyle: implicit(默认)
# bad
factory :post do
association :user
end
# good
factory :post do
user
end
# bad
factory :post do
association :user, :author
end
# good
factory :post do
user factory: %i[user author]
end
EnforcedStyle: explicit
# bad
factory :post do
user
end
# good
factory :post do
association :user
end
# bad
factory :post do
user factory: %i[user author]
end
# good
factory :post do
association :user, :author
end
# good (NonImplicitAssociationMethodNames: ['email'])
sequence :email do |n|
"person#{n}@example.com"
end
factory :user do
email
end
FactoryBot/AttributeDefinedStatically
FactoryBot/ConsistentParenthesesStyle
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
总是 |
2.14 |
2.23 |
在 factory_bot 调用中使用一致的括号风格。
示例
EnforcedStyle: require_parentheses
(默认)
# bad
create :user
build :login
# good
create(:user)
build(:login)
EnforcedStyle: omit_parentheses
# bad
create(:user)
build(:login)
# good
create :user
build :login
# also good
# when method name and first argument are not on same line
create(
:user
)
build(
:user,
name: 'foo'
)
FactoryBot/CreateList
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
已启用 |
是 |
仅命令行(不安全) |
1.25 |
2.26 |
检查 create_list 的使用。
此 cop 可以使用 EnforcedStyle
选项进行配置。
示例
EnforcedStyle: create_list
(默认)
# bad
3.times { create :user }
3.times.map { create :user }
[create(:user), create(:user), create(:user)]
Array.new(3) { create :user }
# good
create_list :user, 3
# bad
3.times { create :user, age: 18 }
# good - index is used to alter the created models attributes
3.times { |n| create :user, age: n }
# good - contains a method call, may return different values
3.times { create :user, age: rand }
EnforcedStyle: n_times
# bad
create_list :user, 3
[create(:user), create(:user), create(:user)]
# good
3.times.map { create :user }
FactoryBot/ExcessiveCreateList
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
否 |
2.25 |
- |
检查列表中是否过度创建模型。
示例
FactoryBot/FactoryAssociationWithStrategy
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
否 |
2.23 |
2.23 |
在工厂关联中使用定义,而不是硬编码策略。
示例
# bad - only works for one strategy
factory :foo do
profile { create(:profile) }
end
# good - implicit
factory :foo do
profile
end
# good - explicit
factory :foo do
association :profile
end
# good - inline
factory :foo do
profile { association :profile }
end
FactoryBot/FactoryClassName
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
已启用 |
是 |
总是 |
1.37 |
2.24 |
在显式设置类属性时使用字符串值。
此 cop 通过延迟加载应用程序文件来促进更快的测试。此外,这可以通过避免从工厂文件预加载应用程序文件来帮助您抑制与外部库结合使用时可能出现的错误。
FactoryBot/FactoryNameStyle
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
总是 |
2.16 |
2.23 |
检查 FactoryBot::Syntax::Methods 的参数的名称样式。
示例
EnforcedStyle: symbol(默认)
# bad
create('user')
build "user", username: "NAME"
# good
create(:user)
build :user, username: "NAME"
# good - namespaced models
create('users/internal')
EnforcedStyle: string
# bad
create(:user)
build :user, username: "NAME"
# good
create('user')
build "user", username: "NAME"
FactoryBot/IdSequence
FactoryBot/RedundantFactoryOption
FactoryBot/SyntaxMethods
默认启用 | 安全 | 支持自动更正 | 添加版本 | 更改版本 |
---|---|---|---|---|
待定 |
是 |
始终(不安全) |
2.7 |
- |
在您的规范中使用来自 FactoryBot::Syntax::Methods
的简写。
安全
自动更正被标记为不安全,因为该 cop 无法验证您是否已在测试套件中包含 FactoryBot::Syntax::Methods
。
如果您使用的是 Rails,请将以下配置添加到 spec/support/factory_bot.rb
中,并确保在 rails_helper.rb
中要求该文件
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
如果您没有使用 Rails
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
config.before(:suite) do
FactoryBot.find_definitions
end
end
示例
# bad
FactoryBot.create(:bar)
FactoryBot.build(:bar)
FactoryBot.attributes_for(:bar)
# good
create(:bar)
build(:bar)
attributes_for(:bar)