Size: a a a

2020 November 11

LL

Lama Lover in pro.elixir
Типа обычно, любая команда может изменить состояние некоторого набора сущностей. Эти сущности я создаю через API или хэлперы, которые сразу пишут в базы в инициализации каждого отдельного теста

Есть сущности, которые просто необходимы для выполнения теста, их состояние не меняется. Например, любая команда выполняется от пользователя, и команды не меняют состояние пользователя (в моём проекте), и тут я использую сиды, чтобы были какие-то пользователи от которых я могу запускать команды.
источник

P

Pavel in pro.elixir
есть же штуки вроде ex_machina, тесты неплохо бы изолировать, сидировать имеет смысл то, что не изменяется (к примеру у тебя в БД лежат какие-то изменяемые опции для работы приложения)
источник

V

V in pro.elixir
Lama Lover
Ну вот у тебя все тесты падают на этапе инициализации. Искать ошибку будет немного душно
тесты не внезапно оказываются упавшими. они зелёные, потом ты что-то изменил, и они становятся красные. если тесты покраснели массово - значит ты затронул какую-то массовую деталь
источник

IK

Ihor Katkov in pro.elixir
Lama Lover
Ну вот у тебя все тесты падают на этапе инициализации. Искать ошибку будет немного душно
Если они падают на этапе инициализации, то ты изменил структуру
источник

IK

Ihor Katkov in pro.elixir
Да, сиды можно использовать только для неизменяемых данных. И даже в этом случае, чаще всего лучше руками сетапить данные
источник

LL

Lama Lover in pro.elixir
V
тесты не внезапно оказываются упавшими. они зелёные, потом ты что-то изменил, и они становятся красные. если тесты покраснели массово - значит ты затронул какую-то массовую деталь
И всё-таки, это никак не помогает изолировать ошибку
источник

AD

Anastasiya Dyachenko in pro.elixir
Alexey Novoselov
с сидами async: true хрен получишь, так что сидить лучше самый минимум, типо одно юзера, который везде нужен, но ни в одном тесте не изменяется
Это почему?
источник

AD

Anastasiya Dyachenko in pro.elixir
Или я не так поняла что такое сиды
источник

AN

Alexey Novoselov in pro.elixir
Anastasiya Dyachenko
Это почему?
ну какбы реализуемо конечно, но секса предстоит очень много. И сиды тут имеется ввиду один seeds.exs на все тесты одновременно с миграцией.
источник

AD

Anastasiya Dyachenko in pro.elixir
А ок, тогда отзываю свой голос из опроса :D
источник

AN

Alexey Novoselov in pro.elixir
если Repo.insert! перед каждым тестом, это не сиды, а самый православный путь)
источник

AD

Anastasiya Dyachenko in pro.elixir
Ex_machina
источник

AD

Anastasiya Dyachenko in pro.elixir
Ещё как-то балловалась setup_all, но это плохая идея
источник

AN

Alexey Novoselov in pro.elixir
тоже крутая штука, но фиктуры прямо в тесте нагляднее получаются. Ex_machina добавляет дополнительный уровень сложности/абстракции по генерации данных и ее использование обосновано только когда этих данных надо генерировать реально много
источник

IA

Ivan Ananev in pro.elixir
Alexey Novoselov
тоже крутая штука, но фиктуры прямо в тесте нагляднее получаются. Ex_machina добавляет дополнительный уровень сложности/абстракции по генерации данных и ее использование обосновано только когда этих данных надо генерировать реально много
так это ж одно и то же? не?
источник

IA

Ivan Ananev in pro.elixir
тебе никто не мешает писать insert  со всеми кишками и нужными полями
источник

IA

Ivan Ananev in pro.elixir
на то он и тест
источник

AN

Alexey Novoselov in pro.elixir
Ivan Ananev
тебе никто не мешает писать insert  со всеми кишками и нужными полями
А зачем ex_machina если можно просто Repo.insert!(%{})?
источник

AD

Anastasiya Dyachenko in pro.elixir
Чтобы спрятать неважные поля и проще читалось
источник

IK

Ihor Katkov in pro.elixir
Alexey Novoselov
А зачем ex_machina если можно просто Repo.insert!(%{})?
Для того, что бы абстрагировать реализацию
источник