Size: a a a

Saint P Ruby Community

2020 June 05

AR

Anna Razumova in Saint P Ruby Community
wi11son
ну и с новым проектом))
Спасибо!)
источник

w

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

АШ

Алексей Шеин... in Saint P Ruby Community
тогда лучше фикстуры
источник

АШ

Алексей Шеин... in Saint P Ruby Community
если это что-то глобальное
источник

АШ

Алексей Шеин... in Saint P Ruby Community
например, список стран
источник

w

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

АШ

Алексей Шеин... in Saint P Ruby Community
ну сложная выборка она же не в каждом тесте
источник

АШ

Алексей Шеин... in Saint P Ruby Community
т.е. если что-то используется везде - фикстура
если что-то сложное только в одной спеке - let_it_be
иначе let
источник

w

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

АШ

Алексей Шеин... in Saint P Ruby Community
хм, а как здесь let_it_be поможет?
источник

АШ

Алексей Шеин... in Saint P Ruby Community
чтобы заинсертить данные разве что только в начале
источник

w

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

w

wi11son in Saint P Ruby Community
сорян, что так непонятно выражаюсь
источник

АШ

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

f🤔

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

еще один очень полезный инструмент по борьбе с плавающими тестами в легаси я давно подсмотрел у гитлаба, про анти-*_any_instance_of в виде *_next_instance_of в местах, где без него не обойтись

https://docs.gitlab.com/ee/development/gotchas.html#avoid-using-expect_any_instance_of-or-allow_any_instance_of-in-rspec
источник

AR

Anna Razumova in Saint P Ruby Community
focusshifter 🤔
оффтопик (не про скорость исполнения)

еще один очень полезный инструмент по борьбе с плавающими тестами в легаси я давно подсмотрел у гитлаба, про анти-*_any_instance_of в виде *_next_instance_of в местах, где без него не обойтись

https://docs.gitlab.com/ee/development/gotchas.html#avoid-using-expect_any_instance_of-or-allow_any_instance_of-in-rspec
👍
источник

CM

Cucumba Morozov in Saint P Ruby Community
я вот до сих пор не выкупаю эту тему с allow_any_instance_of т.к. за все годы ни разу в ногу не выстрелило. как выглядит код+спека, что эта штука мешает жить?
источник

AR

Anna Razumova in Saint P Ruby Community
Кстати та же фигня. Юзаю редко, но иногда требуется. Никогда проблем не возникало
источник

NB

Nikita Bulai in Saint P Ruby Community
Согласен, но в целом предпочитаю instance_spy + allow().to receive(:method).and_return(spy)

но и с тем и с тем пока ни разу проблем не было
источник

AR

Anna Razumova in Saint P Ruby Community
Nikita Bulai
Согласен, но в целом предпочитаю instance_spy + allow().to receive(:method).and_return(spy)

но и с тем и с тем пока ни разу проблем не было
Воу, ни разу такого не видела
источник