
Nikita
26.07.2018
10:20:33
Бытует мнение, что в юнит-тестах не используют БД, как правило
Я могу ошибаться

Anton
26.07.2018
10:20:55

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

Google

Anton
26.07.2018
10:21:01

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

ojab
26.07.2018
10:21:37

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

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

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

Nikita
26.07.2018
10:22:29
(могу в личку бесплатно скинуть)

владичка
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

Nikita
26.07.2018
10:25:29
Спасибо всем!)

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

Антон
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

Anton
26.07.2018
10:33:16

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:37:21

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

Anton
26.07.2018
11:42:09
лучше http://spacemacs.org

Артур
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

Nikita
26.07.2018
11:48:23

Anton
26.07.2018
11:49:07

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

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