@rubylang

Страница 1575 из 1684
Nikita
26.07.2018
10:20:33
Бытует мнение, что в юнит-тестах не используют БД, как правило

Я могу ошибаться

Nikita
26.07.2018
10:20:55
щас пойдет жара

Google
Anton
26.07.2018
10:21:01
Aleksey
26.07.2018
10:21:18
юнит-тест это просто максимально излюолированный тест одного юнита - метода, класса, компонента...

при чем тут бд

владичка
26.07.2018
10:21:51
Раз уж о тестах споры-разговоры, подскажите пожалуйста актуальный ресурс/книгу, который максимально быстро помог бы вкатиться в реальное(!) тестирование рельсового приложения рспеком

Aleksey
26.07.2018
10:21:53
возможно

Nikita
26.07.2018
10:22:12
при чем тут бд
Ну я тестирую сервис, а не базу. Если у меня сервис отработает, а что-то ляжет на этапе базы - то тест упадет, что неверно

Вот я и подумал, что логичнее замокать

но, видимо, в таких случаях это не правильно

владичка
26.07.2018
10:22:53
Было бы превосходно!

Nikita
26.07.2018
10:22:53
(могу в личку бесплатно скинуть)
Полную? У меня есть без некоторых глав

Google
Nikita
26.07.2018
10:24:28
у меня в книге последнее обновление в октябре 23 2017

ojab
26.07.2018
10:25:05
Ну я тестирую сервис, а не базу. Если у меня сервис отработает, а что-то ляжет на этапе базы - то тест упадет, что неверно
не надо юзать моки без необходимости, ибо эти моки нужно потом поддерживать и актуализировать

Anton
26.07.2018
10:26:08
эндпоинта?
это уже интеграционный

Nikita
26.07.2018
10:26:29
Nikita
26.07.2018
10:26:30
ща буит мясо

Anton
26.07.2018
10:27:17
короче, запомнить легко разницу, если класс вызывает что-то не свое - интеграционный. если ты изолированно чекаешь только логику работы без мыслей, а что же там в другом месте вернется - юнит

Nikita
26.07.2018
10:27:47
ну то есть тест ендпоинта тоже может быть юнит тестом)

если он в свою очередь внутри экшна ничего не вызывает

Anton
26.07.2018
10:28:08
https://leanpub.com/everydayrailsrspec
кстати, я тут переосмыслил эту книгу немного. раньше она очень нравилась, сейчас уже не нравится, лол

ну то есть тест ендпоинта тоже может быть юнит тестом)
да, если ты не вызываешь ничего дальше эндпоинта

Антон
26.07.2018
10:28:33
если он в свою очередь внутри экшна ничего не вызывает
если реквестом, то интеграционный, потому что тест про мидлаварь ничего не знает

Anton
26.07.2018
10:29:25
ага, если ты просто вызываешь экшен без привязки к реку и без вызова всего что ниже экшена - юнит тест будет

Nikita
26.07.2018
10:29:41
ну тогда тест класса, который наследуется от другого в априори интеграционный?

Anton
26.07.2018
10:29:42
сейчас пример покажу

вот юнит тесты

https://github.com/saintprug/spb_link_shortener/blob/master/spec/web/controllers/links/show_spec.rb#L6-L19

вот интеграционный https://github.com/saintprug/spb_link_shortener/blob/master/spec/web/controllers/links/show_spec.rb#L21-L30

Google
Антон
26.07.2018
10:30:37
ну тогда тест класса, который наследуется от другого в априори интеграционный?
тестируется только наследник, но со всем наследством - юнит

Nikita
26.07.2018
10:31:06
https://github.com/saintprug/spb_link_shortener/blob/master/spec/web/controllers/links/show_spec.rb#L9

https://github.com/saintprug/spb_link_shortener/blob/master/spec/web/controllers/links/show_spec.rb#L2

разве над экшном нет мидлтвари?

Anton
26.07.2018
10:31:42
так для меня это просто класс

Антон
26.07.2018
10:31:49
ну во первых у него не рельса ? он читер

Anton
26.07.2018
10:31:52
Web::Controllers::Links::Show.new.call(params)

Nikita
26.07.2018
10:32:00
это ханами, это все понятно

Anton
26.07.2018
10:32:08
ну ок, давайте по логике тогда

https://github.com/saintprug/spb_link_shortener/blob/master/spec/links/operations/create_spec.rb#L8-L33

Nikita
26.07.2018
10:32:25
но инициализация Web::Controllers::Links::Show разве не под мидлтварью?

Anton
26.07.2018
10:32:29
вот аналогичные тесты, но без экшенов

Nikita
26.07.2018
10:32:36
понятно

Anton
26.07.2018
10:32:36
она изолированна

Nikita
26.07.2018
10:32:40
тогда окей

(я не спори же, я уточнял)

Anton
26.07.2018
10:32:59
да я понял ?

Nikita
26.07.2018
10:33:14
тупо спорить о том, в чем не уверен)

Google
Nikita
26.07.2018
10:33:42
то бишь в ханами на экшн мидлтварь накидвается только в момент, когда идет его вызов через роуты?

Anton
26.07.2018
10:34:15
ага

Nikita
26.07.2018
10:34:18
понял

Anton
26.07.2018
10:34:34
ну, там в роутере ты мапишь урл на экшен

Nikita
26.07.2018
10:35:05
вот эту
Вот и я так делал же. А возникла спор касательно того, что я тестирую реализацию вместо поведения. А должен проверить результат.

Anton
26.07.2018
10:35:45
ну смотри, если ты пишешь юнит тест, то ты тестируешь логику и вызовы

если интеграционный - результат общий

Admin
ERROR: S client not available

Nikita
26.07.2018
10:35:59
Почему юнит тест базу трогать не может то?

Если твой класс меняет стейт инстанса в базе (только), то тест этого класса в принципе есть юнит

Anton
26.07.2018
10:38:11
Почему юнит тест базу трогать не может то?
если ты тестируешь логику модели (того, что в базу ходит, репозитория например) - то может

если ты сервис тестируешь, который вызывает репозиторий, который в бд пишет - это интеграционный будет тест уже

Nikita
26.07.2018
10:39:47
на самом деле, я вообще подозреваю, что там aasm, поэтому: https://github.com/aasm/aasm#testing

Nikita
26.07.2018
10:41:12
нит, не оно

Darth
26.07.2018
11:12:25
Можно ли как-то сделать так, чтобы можно быть вызывать метод на инстансе модели, если он nil?

ojab
26.07.2018
11:13:05
но зачем

Darth
26.07.2018
11:13:41


Nikita
26.07.2018
11:18:16
Он нил: метод или инстанс?

Google
Darth
26.07.2018
11:18:42
Инстанс

Nikita
26.07.2018
11:19:15
Ну дописывать метод к классу нила)

Darth
26.07.2018
11:20:32
Мне кажется если я так сделаю девлид пойдёт искать нового девелопера

Nikita
26.07.2018
11:21:53
Может просто лучше возвращать какое то значение, если инстанс нил?

Артур
26.07.2018
11:23:23
null object

Darth
26.07.2018
11:23:56
Обычно такие методы пишу как статические, но стало интересно можно ли на инстансе такое делать

Валера
26.07.2018
11:39:47
Для руби кроме рубимайна нормальных IDE нет. Можно юзать VIM+ctags.
В рубимайн можно саблайм схему клавы залить? Я как то давно пытался - скачал конфиг, но все через жопу работало.

Продолжая тему редактора, посоветовали vs code, но мне он не понравился. Расширения, например для спеков и рубокопа работают отвратительно, поиск по проекту иногда показывает какую-то дичь.

Артур
26.07.2018
11:42:26
попробуй емакс или вим
а ты сам чем пользуешься ? )

Anton
26.07.2018
11:42:52
неовимом

Артур
26.07.2018
11:43:13
есть преимущества перед вим8 ?

владичка
26.07.2018
11:43:55
а есть где-то бест практисес для рубимайна? чтобы в статье девелопер описал как и чем пользуется, настройками может какими-то поделился и т.д.?

hasculdr
26.07.2018
11:46:15
geany никто не пользовался?

Anton
26.07.2018
11:46:20
есть преимущества перед вим8 ?
смотря что для тебя преимущество

Nikita
26.07.2018
11:48:23
geany никто не пользовался?
Пользовался, на любителя

Andrey
26.07.2018
11:51:20
А я atom использую. Перешёл после того, как на саблайме виснуть какие-то дополнения стали

アルテミ
26.07.2018
14:48:38
emacs onelove ❤️

Страница 1575 из 1684