Size: a a a

Saint P Ruby Community

2021 May 27

w

wi11son in Saint P Ruby Community
потому что не видел еще ни одного проекта, где юзер не превращался бы в god model
источник

TL

Tab Loid in Saint P Ruby Community
Вобщем, с теорией я знаком, интересует практика.
factory :user уже исправлено
источник

RR

Ruslan Ryabov in Saint P Ruby Community
погоняй там профайлеры на создание сущностей в БД, скорее всего много где еще могут быть тяжелые фабрики, где по сути они не нужны с таким большим набором данных
источник

A

Alex in Saint P Ruby Community
Есть несколько маркеров, на которые я бы попробовал обратить внимание в первую очередь:
1. Тесты, которые ходят в интернет и обращаются к внешним сервисам потому, что их забыли замокать.
2. Тесты, которые создают в базе уйму ненужного мусора, потому что нерационально используются фабрики и шаред контексты.
3. Сложные, функциональные, интеграционные тесты, которые написаны в TDD-стиле "отдельный экспектейшн на каждую проверку".
источник

A

Alex in Saint P Ruby Community
В большинстве случаев, с которыми мне приходилось сталкиваться, основное время бессмысленно тратилось описанным выше образом.
источник

A

Alex in Saint P Ruby Community
В первом приближении можно даже без профайлера обойтись, просто выделить время на ресерч тестовой базы с целью идентификации потенциальных проблем.
источник

w

wi11son in Saint P Ruby Community
но зачем, если test-prof тебе репорт выдаст?
источник

A

Alex in Saint P Ruby Community
Ничего не имею против использования test-prof.
источник

TL

Tab Loid in Saint P Ruby Community
Ок, спасибо. Буду пытаться. В конце концов всегда сложнее всего именно начать что-то делать. Наверное действительно буду профилировать тесты группами начиная с самых тяжелых, а не кидаться сразу на полный набор.
источник

TL

Tab Loid in Saint P Ruby Community
У rspec кстати есть опция --profile которая выведет N самых медленных тестов.
источник

DK

Dmitry Kuznetsov in Saint P Ruby Community
точняк, я про нее забыл)
источник

TL

Tab Loid in Saint P Ruby Community
У нас основная проблема именно количество тестов, а не конкретные из них. Сейчас их 12к. Сами фабрики в основном нормальные, factory doctor если чего и найдет, то немного.
источник

TL

Tab Loid in Saint P Ruby Community
Но объектом мы действительно создаем дохрена
источник

TL

Tab Loid in Saint P Ruby Community
Через let'ы и before
источник

VA

Vsevolod Avramov in Saint P Ruby Community
Может попробовать использовать fixtures?
источник

RR

Ruslan Ryabov in Saint P Ruby Community
там не только файктори докер надо гонять + пороанализирую сами фабрики, они могут создавать тонну записей по связям, которые тебе в тестах не нужны
источник

AN

Andrey Novikov in Saint P Ruby Community
Рельсовый брэйнвошинг — вещь не регулярная: и до пандемии не каждый год проводился, а уж сейчас и подавно непонятно, когда случится.
источник

TL

Tab Loid in Saint P Ruby Community
О, вот это я проморгал кстати
источник

w

wi11son in Saint P Ruby Community
может можно подпатчить фабрики чтоб не создавались релейшны, если их не дергают? это ваще возможно?
источник

TL

Tab Loid in Saint P Ruby Community
Я думаю мне тут нужен before_all или let_it_be, но нужно понять где именно это вставлять
источник