Size: a a a

Saint P Ruby Community

2020 June 03

v

vizvamitra in Saint P Ruby Community
ну и simple_token_authentication тоже не используют
источник

AD

Anton Davydov in Saint P Ruby Community
ого, поздравляю!
источник
2020 June 05

AR

Anna Razumova in Saint P Ruby Community
Доброе утро! Такой вопрос. Как использование фабрик и let влияет на скорость прохождения тестов? Пришла на проект где все оч плохо и это не используют, буду рефакторить. Знаю что тесты будут более изолированными, однако интересно что там именно со скоростью
источник

NB

Nikita Bulai in Saint P Ruby Community
Больше влияет стратегия создания записей в БД - они создаются реально или у вас транзакционная модель? Второй случай быстрый, первый - ужасный. Далее тот же FactoryBot, например, умеет в build_stubbed , который позволяет в некоторых случаях вообще в БД не бегать. Конкретно let сам по себе на скорость не влияет, а вот что в нём - это уже вопрос.
И посмотри в сторону гема test_prof (https://github.com/palkan/test-prof) - поможет отследить что именно медленное в тестах
источник

AR

Anna Razumova in Saint P Ruby Community
Бд стаббится, это сильно увеличивает скорость но все равно все грустно
источник

AR

Anna Razumova in Saint P Ruby Community
С другой стороны изоляция позволит распараллелить тесты
источник

NB

Nikita Bulai in Saint P Ruby Community
Возможно там под капотом запросы к внешним сервисам, да что угодно может быть на самом деле. Я бы рекомендовал начать с поиска самых медленных тестов. Если RSpec - он умеет профилировать. Дальше уже test_prof, чтобы искать причину скорости
источник

AR

Anna Razumova in Saint P Ruby Community
Nikita Bulai
Возможно там под капотом запросы к внешним сервисам, да что угодно может быть на самом деле. Я бы рекомендовал начать с поиска самых медленных тестов. Если RSpec - он умеет профилировать. Дальше уже test_prof, чтобы искать причину скорости
Спасибо
источник

w

wi11son in Saint P Ruby Community
зачастую параллельность ничего не добавляет, если проект тупо долго запускается. Типа на бут уходит секунд 30 вне зависимости от кол-ва тестов
источник

w

wi11son in Saint P Ruby Community
очень прикольная практика с let_it_be
источник

w

wi11son in Saint P Ruby Community
фабрики нужно перебирать, смотреть, может там по 5 слоев вложенности и колбеков в них
источник

NB

Nikita Bulai in Saint P Ruby Community
wi11son
фабрики нужно перебирать, смотреть, может там по 5 слоев вложенности и колбеков в них
Самая распространённая проблема, кстати. Хороший поинт
источник

w

wi11son in Saint P Ruby Community
однозначного решения нет, но настоятельно рекомендую брать тест-проф в руки и по Вовиным докладам делать по ппунктам
источник

w

wi11son in Saint P Ruby Community
Anna Razumova
Доброе утро! Такой вопрос. Как использование фабрик и let влияет на скорость прохождения тестов? Пришла на проект где все оч плохо и это не используют, буду рефакторить. Знаю что тесты будут более изолированными, однако интересно что там именно со скоростью
ну и с новым проектом))
источник

АШ

Алексей Шеин... in Saint P Ruby Community
источник

АШ

Алексей Шеин... in Saint P Ruby Community
let() - по сути это кэширующий метод (значение вычисляется только первый раз)
источник

АШ

Алексей Шеин... in Saint P Ruby Community
let_it_be(:my_var) { 'hello' } - аналог before_all() { @my_var ||= 'hello' }
источник

АШ

Алексей Шеин... in Saint P Ruby Community
т.е в ряде случаев он помогает, но злоупотреблять им не стоит, т.к. может привести к протечке состояния (state leaking) и вы потом будете долго ломать голову почему определенный тест падает только в 10% случаях, а на самом деле другой тест перед ним испортил state
источник

AR

Anna Razumova in Saint P Ruby Community
wi11son
фабрики нужно перебирать, смотреть, может там по 5 слоев вложенности и колбеков в них
Да там они местами вообще не юзают, тупо модели создают.
источник

AR

Anna Razumova in Saint P Ruby Community
wi11son
однозначного решения нет, но настоятельно рекомендую брать тест-проф в руки и по Вовиным докладам делать по ппунктам
+
источник