#ruby-on-rails #performance #testing #rspec
Вопрос:
У меня довольно большая система Rails 6 с примерно 150 моделями. Большинство из них принадлежат к огромной модели (Сообществу), которая является ядром системы.
При запуске RSpec (3.6.0) каждая модель должна быть инициализирована/создана, и для этого требуется создание Сообщества. Это создание занимает около 3 секунд для каждой спецификации, так как у сообщества много обратных вызовов после создания, и это приводит к большой потере времени между тестами.
Мы используем use_transactional_fixtures
, но я не уверен, что это вообще имеет значение. поскольку я верю, что даже без этого каждая фабрика в любом случае создаст новое сообщество.
Мне было интересно, есть ли какой-либо способ с помощью RSpec поделиться одним сообществом во всем наборе тестов и позволить всем фабрикам использовать его вместо того, чтобы сворачивать и создавать новое для каждой спецификации. Так как у Сообщества в любом случае есть своя собственная спецификация, и в ней мы проверяем ее создание и прочее.
Заранее спасибо.
Комментарии:
1. В то время как это возможно, вам нужно рассмотреть возможность длительного состояния между тестами, которое вызывает ненадежные и ненадежные тесты. Возможно ли, что вы могли бы частично решить проблему с помощью стаббинга?
2. Это, конечно, возможно, но я думаю, что мне придется это проверить, если я найду способ поделиться одним сообществом во всех тестах.