
Herman
22.05.2017
12:19:30

енот
22.05.2017
12:48:13
а можно как-то неопределенной константы имя выводить вместо самой ошибки?

Sergey
22.05.2017
13:57:10
nginx -t && nginx -s reload

Google

Sergey
22.05.2017
13:57:42
а еще можно локально в контейнере баловаться

Роман
22.05.2017
13:57:56
так себе повод
Зато железный :) Из-за этого на всяких шаредах Apache до сих пор незаменим. И поэтому до сих пор только, ИМХО, в таких количествах и стоит.

Sergey
22.05.2017
13:58:31
ну ладно)

Herman
22.05.2017
14:12:27
вот что нашел, кстати

Роман
22.05.2017
14:12:59

Aleksandr
22.05.2017
14:13:35

Herman
22.05.2017
14:14:05
ну вот я думаю hhvm подключить

Aleksandr
22.05.2017
14:14:14

Herman
22.05.2017
14:14:18
а там ведь тоже fastCGI

Google

Herman
22.05.2017
14:14:59
скорость выше, а с совместимостью каких-то проблем нет.

Aleksandr
22.05.2017
14:15:04
почему?
смысла нет. быстродействие на уровне пхп7, а кое-где и хуже. совместимость страдает

Herman
22.05.2017
14:16:14
тесты говорят об обратном. да ладно, пока буду модный hhvm использовать, а потом, как разберусь, переключусь обратно, если что. я смотрел с yii2 и laravel - 100% совместимость

Aleh
22.05.2017
14:17:23
читал, что доктрину не смогли запустить, происходили всякие странные вещи типа флуш прошел, а в базе ничего не появилось

Pavel
22.05.2017
14:19:55
В симфони 4 вообще дропнули поддержку hhvm https://twitter.com/fabpot/status/865263025670033410
А по бенчмаркам там максимум 10-20% разницы.

Aleksandr
22.05.2017
14:20:01

Herman
22.05.2017
14:24:11
ладно. походу, переубедил

Artem
22.05.2017
14:33:24
Подскажите по mockery, не могу понять где я неправ. Хочу чтобы в ответ на вызов foo() у объекта проставлялось публичное свойство prop. Делаю по документации http://docs.mockery.io/en/latest/reference/expectations.html#expectations-setting-public-properties
$mock = Mockery::mock('overload:' . Test::class);
$mock->shouldReceive('foo')->set('prop', 'hello');
$o = new Test;
$o->foo();
var_dump($o->prop);
но на выходе получаю Undefined property: Test::$prop на строку с var_dump()

Sergey
22.05.2017
14:43:54
какая-то дичь если честно

Artem
22.05.2017
14:51:21
поясню для чего это нужно: laravel (eloquent), код вида
$model = new Model;
$model->setForeignId(123);
makeSmth($model->foreign);
Где foreign - это связь с другой моделью по foireignId
если скажете, как тут подменить $model->foreign, то я буду очень рад

Sergey
22.05.2017
14:57:00
а зачем его подменять?
это ж данные
вообще не очень хорошая идея покрывать юнит тестами что-то завязанное на AR

Artem
22.05.2017
14:57:50
эмн, логика завязана на AR очевидным образом. Как иначе тестировать логику?

Sergey
22.05.2017
14:58:05
подсовываешь стабы
вместо инстансов AR

Artem
22.05.2017
14:58:53
ну вот я пример привёл. В этом месте создаётся новый объект AR через new. Так принято в eloquent
потом этот объект заполняется и вставляется в БД

Sergey
22.05.2017
14:59:19
IoC

Google

Sergey
22.05.2017
14:59:24
ну то есть

Artem
22.05.2017
14:59:25
ну или делается return, не принципиально

Sergey
22.05.2017
14:59:34
ГДЕ у тебя создается инстанс?
какой-то класс менеджер?
или объектная модель?
$model = new MyObjectModel($myArModel);
и тогда тебе никто не мешает подменять $myArModel на какой-то стаб
но мокать такое дело - это как мокать приватные проверти у объекта который ты тестишь
сложно, можно, не имеет практического смысла
проще поднять интеграционные тесты на какой in-memory базе
и гонять в 10 потоков
что бы по скорости было не очень больно

Artem
22.05.2017
15:01:18
вот этого я и не хочу. Зачем мне базу подниматиь для тестов. Это дно какое-то

Sergey
22.05.2017
15:01:41
ну так зачем ты eloquent тогда юзаешь, где сама идея заключается в том что бы смешать инфарструктур и логику
сам принял такое решение
сам и кушай минусы подхода

Artem
22.05.2017
15:01:57
это не мой выбор. Но моя боль

Sergey
22.05.2017
15:02:18
ну тогда - думай в сторону того как убрать всю бизнес логику из AR модели и завернуть ее в объектную модель (не сервисы)

Artem
22.05.2017
15:02:18
мне сама идея AR не нравится в корне, но пока с этим ничего не поделать

Sergey
22.05.2017
15:02:30
row data gateway - можешь погуглить

Google

Artem
22.05.2017
15:02:47
и весь код переписать, да
вопрос в обзем-то по mockery

Sergey
22.05.2017
15:02:55
ну смотри
давай так

Evgeniy
22.05.2017
15:03:02
ну альтернативный вариант страдать дальше

Sergey
22.05.2017
15:03:03
что ты так протестишь?

Evgeniy
22.05.2017
15:03:08
с этими проблемами

Sergey
22.05.2017
15:03:22
тесты упадут или останутся работать?

Admin
ERROR: S client not available

Sergey
22.05.2017
15:03:40
что ты хочешь зафиксировать тестами?

Evgeniy
22.05.2017
15:03:47
ну любой тест это как раз сигнал что там код изменился
другое дело ты завязываешься на внутренности а это беда

Artem
22.05.2017
15:04:13
а где я на внутренности завязываюсь? Я завязываюсь на данные

Evgeniy
22.05.2017
15:04:27
ar внутри себя работает с бд
и не разделить данные и соединеине с бд
таково наследование
и тебе это поддерживать
это одна из основных проблем ar
что писать тесты становится больно

Google

Artem
22.05.2017
15:05:20
ох, да что вы мне говорите про то, что AR - говно. Я и так прекрасно знаю это

Evgeniy
22.05.2017
15:05:28
тебе предложили уже юзать ar как row date gateway
а модели уже юзали бы его
тогда ты бы мог мокать объекты

Sergey
22.05.2017
15:05:47
нарушаешь LoD

Artem
22.05.2017
15:05:52
весь код уже написан

Sergey
22.05.2017
15:05:58
если код УЖЕ написан
то тогда вообще нет смысла писать юнит тесты

Artem
22.05.2017
15:06:05
нельзя взять и всё переписать

Sergey
22.05.2017
15:06:06
пиши интеграционные

Artem
22.05.2017
15:06:18
смысл есть всегда. Новая логика же дописывается

Sergey
22.05.2017
15:06:26

Evgeniy
22.05.2017
15:06:26
лол

Sergey
22.05.2017
15:06:37
юнит тесты на говнокод = боль поддерживать эти тесты
пишем интеграционные тесты, чутка рефакторим что бы можно было писать юниты, пишем юнитов много-много
таков алгоритм работы с легаси
и это больно и долго

Artem
22.05.2017
15:12:25
это больно и долго, но не настолько, чтобы это было невозможно сделать. Мокаются только данные (через дебри методов eloquent), и далее работа алгоритма уже проверяется на этих данных. Mockery тут сильно помогает тем, что как раз new позволяет отловить через полную подмену класса

unknown
22.05.2017
15:14:22
Всем привет, у кого есть готовый скрипт по Mlm

Artem
22.05.2017
15:14:31
проблема тут в том, что входные данные размазаны между непосредственно аргументами тестируемого алгоритма и тем, что лежит в БД. Аналогично и результат работы размазан. Собирать всё это удовольствие то ещё, но это возможно

Evgeniy
22.05.2017
15:15:14
ну удачи