FactoryAllStub
Factory All Stub — это заклинание, которое заставляет FactoryBot/FactoryGirl использовать стратегию build_stubbed даже когда вы вызываете create или build.
Это позволяет одним движением «волшебной палочки» вылечить тесты, которые Factory Doctor считает «больными».
Инструкция
Сначала необходимо явно активировать FactoryAllStub:
TestProf::FactoryAllStub.initВ процессе инициализации TestProf встраивается в логику генератора FactoryBot.
После этого необходимо также явно включить all-stub режим:
TestProf::FactoryAllStub.enable!Для отключения all-stub режима выполните:
TestProf::FactoryAllStub.enable!Использование с RSpec
Добавьте в spec_helper.rb (или rails_helper.rb):
require "test_prof/recipes/rspec/factory_all_stub"Это автоматически активирует FactoryAllStub (не нужно делать .init) и добавить shared context "factory:stub", который вы сможете подключать вручную или с помощью тега factory: :stub для включения режима all-stub:
describe "User" do
let(:user) { create(:user) }
it "is valid", factory: :stub do
# будет использована стратегия `build_stubbed` вместо `create`
expect(user).to be_valid
end
endБонус: Для автоматического исправления тестов, обнаруженных FactoryDoctor, выполните следующую команду:
FDOC=1 FDOC_STAMP=factory:stub rspec ./spec/models