Набор тестов RSpec — Общий доступ к огромному объекту по всем спецификациям

#ruby-on-rails #performance #testing #rspec

Вопрос:

У меня довольно большая система Rails 6 с примерно 150 моделями. Большинство из них принадлежат к огромной модели (Сообществу), которая является ядром системы.

При запуске RSpec (3.6.0) каждая модель должна быть инициализирована/создана, и для этого требуется создание Сообщества. Это создание занимает около 3 секунд для каждой спецификации, так как у сообщества много обратных вызовов после создания, и это приводит к большой потере времени между тестами.

Мы используем use_transactional_fixtures , но я не уверен, что это вообще имеет значение. поскольку я верю, что даже без этого каждая фабрика в любом случае создаст новое сообщество.

Мне было интересно, есть ли какой-либо способ с помощью RSpec поделиться одним сообществом во всем наборе тестов и позволить всем фабрикам использовать его вместо того, чтобы сворачивать и создавать новое для каждой спецификации. Так как у Сообщества в любом случае есть своя собственная спецификация, и в ней мы проверяем ее создание и прочее.

Заранее спасибо.

Комментарии:

1. В то время как это возможно, вам нужно рассмотреть возможность длительного состояния между тестами, которое вызывает ненадежные и ненадежные тесты. Возможно ли, что вы могли бы частично решить проблему с помощью стаббинга?

2. Это, конечно, возможно, но я думаю, что мне придется это проверить, если я найду способ поделиться одним сообществом во всех тестах.