
Alexey
26.07.2018
13:39:28
Юнит тесты могут использовать базу
Кодесепшн расширяет тест кейсы phpunit и добавляет поддержку _fixtures() с коробки
Если хочешь мокать базу, то тут надо отказываться от AR в пользу репозиториев ?
И мокать интерфейсы репозиториев (:

Google

Dmitriy
26.07.2018
13:44:00

Alexey
26.07.2018
13:44:10
лол

Saško
26.07.2018
13:44:12
в базу тогда это не юнит тест
т.е. поменяли схему в базе, а в АР/моке забыли
тесты проходят, а в реальности падает
так чтоли?
АР полностью зависит от структуры таблицы, так что если ты хочешь тестить модель, то очевидно в связке с БД

Alexey
26.07.2018
13:44:28
ты не дружишь с терминологией и не понимаешь, что такое юнит
отсюда и проблемы (:

Dmitriy
26.07.2018
13:45:15

Alexey
26.07.2018
13:45:39
а мог бы сгенерить фейкером фикстуры за 5 минут и не гонять лысого
а потом еще и переиспользовать фикстуры в функциональных тестах

Dmitriy
26.07.2018
13:47:26
когда я захочу протестировать еще и бд. конечно сделаю . но я не хочу тестировать и бд

Alexey
26.07.2018
13:47:33
прикол в том что ActiveRecordInterface магию релейшнов и не описывает
и ты в итоге замокал конкретную модель
реализацию (:

Google

Dmitriy
26.07.2018
13:51:32

Saško
26.07.2018
13:51:58

Dmitriy
26.07.2018
13:52:54

Alexey
26.07.2018
13:53:11

Dmitriy
26.07.2018
13:53:31

Saško
26.07.2018
13:54:03
потому что в модели у тебя осталось username и мок тоже username

Alexey
26.07.2018
13:54:34
попытка оправдать свое непонимание, апеллируя к чужому авторитету, тебе тут слабо поможет

Dmitriy
26.07.2018
13:55:02

Alexey
26.07.2018
13:55:04
юнит это кусок кода

Dmitriy
26.07.2018
13:55:27

Alexey
26.07.2018
13:55:34
ты считаешь, что у юнита не может быть зависимостей, но это не так

Saško
26.07.2018
13:55:38

Alexey
26.07.2018
13:55:54
просто потому что твои юниты это не чистые функции

Dmitriy
26.07.2018
13:56:25

Alexey
26.07.2018
13:56:26
и они МОГУТ и БУДУТ иметь зависимости от какого-то стейта ?
в данном случае стейт это схема и данные в бд

Saško
26.07.2018
13:57:22

Alexey
26.07.2018
13:57:46

Google

Alexey
26.07.2018
13:58:07
причем yii2-faker позволяет фикстуры генерить, описывая шаблон за пару минут
и грузить их в тесты, используя механизм ActiveFixture, поддерживаемый самим Yii2 модулем в Codeception

Vadim
26.07.2018
13:58:41
Как сделать post-ссылку? ['data-method' => 'POST'] не работает

Alexey
26.07.2018
13:59:04

Vadim
26.07.2018
14:00:31

Alexey
26.07.2018
14:02:45
BootstrapPluginAsset

Dmitriy
26.07.2018
14:03:31

Alexey
26.07.2018
14:04:28

Dmitriy
26.07.2018
14:04:45

Alexey
26.07.2018
14:04:54
и тогда она совсем не обязательно будет грузиться 3 часа

Dmitriy
26.07.2018
14:05:15

Alexey
26.07.2018
14:05:40
с чего бы? )

Dmitriy
26.07.2018
14:05:59
с того что для теста нужен весь датасет в 20гб

Alexey
26.07.2018
14:06:04
ужс

Saško
26.07.2018
14:06:33
но за-то имеет другие минусы.
Но вынесение вердикта через интернет о разработке продукта не зная его нюансов это конечно здорово, мне бы такой дар.
Но в данном случаи нужно оттестировать без бд. иначе тесты будут выполнятся +3 часа.
понимаешь, в чем проблема, ты тратишь время и символы на то, чтобы пускать саркастические шуточки, типа «ебать вы тупые, чуваки, придумали какой у меня проект, а не знаете какой он на самом деле»
вместо того, чтобы потратить это же время на то, чтобы прямо пояснить особенность твоего проекта, почему ты не можешь использовать базу

Alexey
26.07.2018
14:06:49
какое это имеет отношение к юнит тестированию? это нагрузочное тестирование выходит

Saško
26.07.2018
14:07:30

Dmitriy
26.07.2018
14:07:33

Alexey
26.07.2018
14:08:07

Vadim
26.07.2018
14:08:11

Google

Alexey
26.07.2018
14:08:21
твой код должен работать одинако на любых наборах данных

Dmitriy
26.07.2018
14:08:22

Vadim
26.07.2018
14:08:23
Не пашет все равное, но вроде должен пахать...

Alexey
26.07.2018
14:08:26
хоть на пустой базе, хоть на полной
для этого и используются фикстуры - чтобы обеспечить минимальный стейт приложения (:
позволяющий все протестить

Dmitriy
26.07.2018
14:09:07

Alexey
26.07.2018
14:09:20
ну такое
это значит что код плохо деструктурирован

Admin
ERROR: S client not available

Saško
26.07.2018
14:09:54
и ты написал 20гигабайт моков?

Dmitriy
26.07.2018
14:10:07
понимаешь, в чем проблема, ты тратишь время и символы на то, чтобы пускать саркастические шуточки, типа «ебать вы тупые, чуваки, придумали какой у меня проект, а не знаете какой он на самом деле»
вместо того, чтобы потратить это же время на то, чтобы прямо пояснить особенность твоего проекта, почему ты не можешь использовать базу
нет. это вы тут решили поспорить о том что такое тестирование. из-за банального вопроса.
при том что проблему я уже решил.

Alexey
26.07.2018
14:11:06
тебе видней конечно
если у тебя 20 гиг данных и ты пытаешься использовать одновременно и AR (который вообще не знает про инверсию зависимостей), и юнит тесты - тут все очевидно

Saško
26.07.2018
14:11:17

Alexey
26.07.2018
14:11:31
как минимум плохо разнесены слои

Dmitriy
26.07.2018
14:11:47

Alexey
26.07.2018
14:11:55
потому что если бы они были разнесены хорошо - вопроса бы просто не возникло (:
и это мы уже проходили, да

Google

Dmitriy
26.07.2018
14:12:55

Alexey
26.07.2018
14:13:21

Saško
26.07.2018
14:13:49
я тупо не хочу спорить. о чем я выше и сказал. я уже проходил этот диалог
ну так сразу бы пояснил что база будет 20 гиг
просто тут очень часто бывает, приходит человек и говорит «вы знаете, я ем и мне больно. как не есть?» ему поясняют что это странный вопрос, а он продолжает утверждать «нет, я где-то читал что есть праноеды, мне нужно отказаться от еды»
а через стопицот вопросов оказывается, что он ест с ржавого тесака, и проблема не в еде, а в подходе
ну типтово

Dmitriy
26.07.2018
14:15:05

Alexey
26.07.2018
14:15:39

Dmitriy
26.07.2018
14:16:23
https://t.me/yii2ru/81825
вот юнит

Alexey
26.07.2018
14:16:56
причем тут методы вообще?

Dmitriy
26.07.2018
14:16:58

Alexey
26.07.2018
14:17:07
юнит и функцией может быть
это не так
юнит и маленьким модулем можеть быть
юнит в классическом понимании это минимально декомпозируемый кусок кода
в ООП это метод, но юнит тестирование и в не ООП языках применяется
если у тебя метод зависит от 20-гигабайтового сета данных (сайд эффекты, да-да), то у тебя точно не юнит тест запускается (:

Screamie
26.07.2018
14:20:43
Народ можно прервать ваш пылкий спор? =) У меня какое-то загадчное поведение AR =) Кто может в SQL?
Есть такой кусок запроса в SearchAR:
->select(['author.*', 'COUNT(post.author_id) AS posts_count, COUNT(news.author_id) AS news_count'])
->JoinWith(['posts', 'news'])
->groupBy('author.user_id')
->distinct();
в AR Auhtor ловлю поля posts_count и news_count. Для всех авторов выводятся норм, а для двух почему-то странные цифры у одно 17345 (хотя всего там максимум 8000 записей) для другого 36.

Dmitriy
26.07.2018
14:20:44

Alexey
26.07.2018
14:21:16
я лишь указываю тебе на явные ошибки в логике (и архитектуре)

Dmitriy
26.07.2018
14:21:40

Alexey
26.07.2018
14:22:00
я нет, я лишь шарю свой экспириенс в тестировании
он уже никуда не денется и не изменится (:
И раз уж ты пытаешься на чужом авторитете выехать - почитай хотя б Фаулера