@phpclubru

Страница 252 из 956
Roman
21.06.2017
09:06:36
Хотя я понял тебя.

Скобки?

Google
Roman
21.06.2017
09:10:52
Спасибо!

Серёга
21.06.2017
09:10:57
не за что

Roman
21.06.2017
09:13:46
Вышла ошибочка

Pavel
21.06.2017
10:44:06
$data = file_get_contents($this->apiUri);вот, сделано дешево и сердито

И чтобы замокать такой ответ апи, достаточно на диске создать файл с данными и в apiUri вставить путь к файлу ?

Adel
21.06.2017
10:45:03
еретик

на костре тебя сожжем

sergey
21.06.2017
10:46:00
фу, файлы

все время кажется что файлы зло

хотя на самом деле добро

Adel
21.06.2017
10:46:25
все есть файл

sergey
21.06.2017
10:46:28
хотя думать надо, можно диск задрочить )

да

Google
sergey
21.06.2017
10:46:39
все есть файл

а если не файл, то папка. Хотя тоже файл

Pavel
21.06.2017
10:53:01
хотя думать надо, можно диск задрочить )
Диск не задрочишь просто так, там все кешируется в памяти многое.

sergey
21.06.2017
10:53:48
Просто так нет. Надо с особым цинизмом это делать. чтобы кеша не хватало.

Roman
21.06.2017
11:05:36
И чтобы замокать такой ответ апи, достаточно на диске создать файл с данными и в apiUri вставить путь к файлу ?
Это не замокать, а подменить. А вот была бы у тебя в классе зависимость от HttpClient или даже SomeApiClient, мог бы реально замокать :)

Pavel
21.06.2017
11:06:03
Застабить :)

Roman
21.06.2017
11:07:57
Как плюс мока, ты еще и проверяешь, что нужный метод реально был вызван и всего один раз

Где-то читал, что Стаб - это "Заглушка для метода или объекта", так что хз, фикстура какая-нибудь или просто заглушка)

Pavel
21.06.2017
11:08:43
А зачем проверять что он был вызван 1 раз? Пусть хоть 50 раз вызывается, мне все равно.

Roman
21.06.2017
11:10:20
Ну если у тебя при выполнении одного атомарного действия апи дергается 50 раз - это обычно не к добру)

Pavel
21.06.2017
11:10:50
Не к добру, но в данный момент мне это неважно

Тут очередной легаси код, чтобы его переписать это надо отдельную таску создавать и сидеть перекраивать 5 классов, внедрять их в контейнер и еще 5 часов потратить.

Roman
21.06.2017
11:12:04
Инъекция зависимостей - это не обязатнльно контейнер, а легаси да, оно такое(

Никому не попадалось расширение для симфоневский форм, позволяющее кастомизировать формы произвольной вложенности?

Вроде collection_row_N_widget

Pavel
21.06.2017
11:53:03
И чтобы замокать такой ответ апи, достаточно на диске создать файл с данными и в apiUri вставить путь к файлу ?
Моя гениальная идея потерпела фиаско. Относительный путь к файлу меняется в завимости от того из какого места мы запускаем тесты и они нестабильны. Шах и мат, любители простоты!

sergey
21.06.2017
12:03:15
так это

а что больше ничего не инклудится?

Pavel
21.06.2017
12:11:28
ну так все остальное инклудится нормально через __DIR__ и все такое. А у нас конфиг в json и там не подсунешь никаких динамически высчитываемых констант.

sergey
21.06.2017
12:14:24
json можно обработать на пхп. Некоторые с этой же целью, чтобы путь вычислить, CSS через пхп гонят

Google
Roman
21.06.2017
12:22:45
*и это абсолютно нормальное поведение

В конфиге можно и абсолютные пути прописать

Pavel
21.06.2017
12:32:38
нет как же ты пропишешь абсолютный путь, если на тестовой тачке он один, а у разработчиков может быть другой

Roman
21.06.2017
13:18:38
Ну так подразумевается, что и тестовый конфиг будет другой

Пути нужно выносить в конфиги, только если это действительно переменные значения, вроду директории логов, каких-то внешних данных итд. А если это пути к файлам, которые хранятся в том же репозитории, что и код, их можно тупо хардкодить, ну или задавать относительно какого-нибудь APP_ROOT

Ваш кэп (:

Pavel
21.06.2017
13:23:19
> или задавать относительно какого-нибудь APP_ROOT > В конфиге можно и абсолютные пути прописать Я вот на вторую фразу отвечал, а первая в каком-то смысле с ней антогонистична.

Roman
21.06.2017
13:24:57
Я имел ввиду, что "переменные" пути прописываются как абсоютные, а остальные хардкодятся

Pavel
21.06.2017
14:22:14
Тоже как бы получится в разных исходниках разный путь до файла стаба

Сергей
21.06.2017
14:23:57
Скинь изначальную задачу

Pavel
21.06.2017
14:24:29
$data = file_get_contents($this->apiUri);вот, сделано дешево и сердито
Нужно застабить один ответ для тестов.

Вместо $this->apiUri подставить не урл API а что-то еще, или как-то еще в $data получить тестовые данные.

Сергей
21.06.2017
14:34:09
Вместо $this->apiUri подставить не урл API а что-то еще, или как-то еще в $data получить тестовые данные.
Попробуй сделать на поддомене тестовом этот файлик и обращаться к нему в тестах

И подставлять урл только другой

Урл можно в env запихнуть

И на каждой машине будет свой, на деве и тесте фацлик на проде настоящий

Roman
21.06.2017
14:37:09
Как люди не извращаются.. Вынеси свой file_get_contents в другой метод и мокай его

Сергей
21.06.2017
14:40:43
Вместо $this->apiUri подставить не урл API а что-то еще, или как-то еще в $data получить тестовые данные.
А еще лучше текстом в $data подставь результат, без внешнего получения и все

Google
Сергей
21.06.2017
14:41:12
Это же для тестов, значит ты знаешь какой результат ожидать

dypa
21.06.2017
14:56:06
в сторону https://github.com/InterNations/http-mock не смотрел?

Damir
21.06.2017
15:15:45
в сторону https://github.com/InterNations/http-mock не смотрел?
может из пушки по воробяьм, но у guzzle есть встроенная поддержка стабов для тестирования

Damir
21.06.2017
15:17:44
http://docs.guzzlephp.org/en/latest/testing.html

Admin
ERROR: S client not available

Roman
21.06.2017
15:18:24
http://docs.guzzlephp.org/en/latest/testing.html
В данном случае разумно было бы мокнуть весь http клиент

Вы же не сетевое взаимодействие институте и не прослойку над ней.

Damir
21.06.2017
15:20:21
если дальше продолжать мысль про разумность, то можно разделить ответственности, и выделить некий клиент, который предоставляет данные, и мокать уже его, без привязки к транспорту

Roman
21.06.2017
15:21:52
Так и должно быть, в простейшем случае этим клиентом может быть класс с одним методом и file_get_contets внутри

Damir
21.06.2017
15:22:04
ага

Roman
21.06.2017
15:24:19
В чем тут костыль?

Damir
21.06.2017
15:24:19
это не костыть, это IOC и SRP)

Roman
21.06.2017
15:28:13
Главное, @todo Воткнуть guzzle не забыть написать)

А по делу, никто не будет ругаться, если это будет не класс, а отдельный метод в том же классе. Это же PHP :)

Паттерны ради паттернов.

Damir
21.06.2017
15:34:27
с таких фраз и начинаются все войны

Roman
21.06.2017
15:34:58
Не начинайте.

Google
Web
22.06.2017
04:59:32
Тут есть кто?

dypa
22.06.2017
05:00:32
закрыто на переучёт

Vasiliy
22.06.2017
05:04:28
Пхп макаки собрались)))

Web
22.06.2017
05:07:44
RewriteRule ^test/([%_\-\+a-zA-Z0-9\/\s]+)$

Почему данная регулярка не пропускает %

Andrei
22.06.2017
05:26:56
RewriteRule ^test/([%_\-\+a-zA-Z0-9\/\s]+)$
#^test/([%_\-\+a-zA-Z0-9\/\s]+)$#

Web
22.06.2017
05:29:10
#^test/([%_\-\+a-zA-Z0-9\/\s]+)$#
не не работает

Andrei
22.06.2017
05:31:19
preg_match('#^test/([%_\-\+a-zA-Z0-9\/\s]+)$#i', $subject)

Web
22.06.2017
05:37:32
RewriteRule ^test/(.*)$ ?page=settoken&token=$1 // test/http%3A%2F%2Fwww.url-encode-decode.com // ?page=settoken&token=http%3A%2F%2Fwww.url-encode-decode.com

1-ое не работает

2 работает

и еще надо что бы пустой $1 тоже читал test/

#^test/([%_\-\+a-zA-Z0-9\/\s]+)$# так вообще не работает test/ Not Found The requested URL /test/123 was not found on this server.

Andrei
22.06.2017
05:41:43
вы хоть немножко читали про regexp? экранирование, модификаторы, ^$ я вам посоветую установите себе небольшую утилитку RegExBuddy и протестируйте все свои регулярки на исходных данных

более того, канал по php, а вы скидываете регулярку RewriteRule

Vadiimmm:-)))
22.06.2017
07:25:13
как сделать чтобы эксепшен не выкидывал используя в свиче анонимку?

Yaroslav
22.06.2017
07:27:34
есть каналы по php, фишки/новости и т.д. ?

Страница 252 из 956