Factory bot Flashcards
Как включить Factory bot в свой Rails проект ?
в Gemfile написать:
group :development, :test do
gem ‘factory_bot_rails’
end
Как отключить использование factory bot для замены fixtures в моем Rails приложении
в application.rb :
config.generators do |g|
g.factory_bot false
end
Для чего нужен Factory bot ?
Для автоматической замены fixtures
- при создании шаблонов тестов генераторами,
- при использовании в тестовых случаях
Какой каталог фабрик по умолчанию ?
test/factories
или
spec/factories
Как изменить каталог фабрик по умолчанию ?
в файле application.rb:
config.generators do |g|
g.factory_bot dir: ‘custom/dir/for/factories’
end
Что будет, если гем factory_bot_rails не включен в группу development ?
Генераторы Rails будут генерировать стандартные файла фикстур .yml
В каком файле описаны определения всех фабрик?
factories.rb в каталоге с тестами по умолчанию.
Какие настройки и куда нужно внести, чтобы использовать factory bot с гемом Rspec?
файл spec/support/factory_bot.rb
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
Затем в rails_helper.rb загрузить этот файл
require ‘support/factory_bot’
Какие настройки и куда нужно внести, чтобы использовать factory bot с Test::Unit ?
Просто включить модуль в класс теста
class Test::Unit::TestCase
include FactoryBot::Syntax::Methods
end
Какие настройки и куда нужно внести, чтобы использовать factory bot с Minitest ?
Просто включить модуль в класс теста
class Minitest::Unit::TestCase
include FactoryBot::Syntax::Methods
end
Каким образом описывается формирование одной фабрики?
# Тут будет угадана модель User FactoryBot.define do factory :user do first_name "John" last_name "Doe" admin false end end
Как для одного класса модели задать более одной фабрики?
FactoryBot.define do # Тут будет использован явно указанный класс модели User (модель Admin не будет угадываться)
factory :admin, class: User do first_name "Admin" last_name "User" admin true end end
Из каких мест приложения будут загружаться фабрики при выполнении метода
FactoryBot.find_definitions ?
test/factories.rb
spec/factories.rb
test/factories/.rb
spec/factories/.rb
Какие стратегии создания объектов из фабрик поддерживает factory bot?
# Возвращает не сохраненный экземпляр User user = build(:user)
# Возвращает сохраненный экземпляр User user = create(:user)
# Возвращает hash аттрибутов который может быть использован для создания экземпляра класса User attrs = attributes_for(:user)
# Возвращает объект со всеми выделенными (stubbed out) аттрибутами stub = build_stubbed(:user)
Можно ли передавать блоки методам создания объектов ?
При передаче блока любому из этих методов экземпляр, созданный фабрикой, прокидывается внутрь блока
create(:user) do |user|
user.posts.create(attributes_for(:post))
end