Диего
имеет место быть )
Antonio
Подскажите, а есть возможность "замедлить" тесты? в определенный момент вместо 200 кода получаю 429 Too Many Requests . Ну и если phpunit не для этого чата, то пошлите куда надо =)
ThunderAL
@JesterAntik это костыль
это тебя посылает мидлвэр throttle он в файле App\Http\Kernel
можешь запилить if (env('APP_DEBUG', true))
Диего
https://laravel.com/docs/5.5/container#introduction
Диего
в общем прослойка между сервисом работы бд и контроллером
ThunderAL
'api'=> (env('APP_DEBUG', true)) ? [
'throttle:60,1',
'bindings',
] : [
'bindings',
]
ThunderAL
что-то около
ThunderAL
ой
ThunderAL
поменяй массивы местами только))
Antonio
спасибо
ThunderAL
ага
ThunderAL
такстоп!
ThunderAL
нет
ThunderAL
это если оно в .env не находит таёт тебе значение из второго аргумента
ThunderAL
env('test', 'default')
ThunderAL
костыль, не красиво
Antonio
думал я дурак, но PHP тоже говорит, что выражение не может быть использовано для указания значения по умолчанию для свойства класса
Andrey
Не стоит в коде обращаться к env. Лучше config(“app.debug”)
ThunderAL
cat .env
TEST=123
$ env('TEST', 11111)
» 123
$ env('TEST2', 11111)
» 111111
Anton
если у тебя разные настройки для разных окружений, то надо их прописывать не if и смотреть окружение, а в самом конфиге
Anton
прям в .env и определи значение...
invariance
делаешь свою конфиг переменную, хранящую значение для тестового апи
Anton
ну или в нужном .env.XXX
ThunderAL
ему нужно простое решение
ThunderAL
чтобы было понятно
invariance
я назвал изичное)
ThunderAL
+ не костыльно
invariance
и не костыльное
Antonio
попробовал сдулать вот так: protected $middlewareGroups = config('middleware.groups');
Antonio
проблема остается все та же: в качестве дефолта нельзя использовать вычисляемое значение
invariance
в каком-нибудь config/route.php добавляешь строку
api-ratelimit => env("API_RATELIMIT", "throttle:60,1");
в кернеле соотв-но назначаешь
'api' => [
config('route.api-ratelimit'),
'bindings',
],
А в phpunit.xml подставляешь свою ENV переменную
Antonio
'api' => [
config('route.api-ratelimit'),
'bindings',
], - это ошибка
invariance
уверен?
Antonio
да
invariance
ну и какая ошибка?
Antonio
expression is not allowed as field default state
ThunderAL
\Illuminate\Routing\Middleware\ThrottleRequests
handle($request, Closure $next, $maxAttempts = 60, $decayMinutes = 1)
invariance
Диего
в RouteServiceProvider -> mapApiRoutes присваивай middleware в зависимости от окружения
Диего
а в кернель добавь middleware группу
Диего
api-dev
Диего
как то вот
ThunderAL
пили $middlewareGroupsDefault
$middlewareGroupsProduction
$middlewareGroups = env('APP_DEBUG', false) ? $middlewareGroupsDefault : array_merge($middlewareGroupsDefault, $middlewareGroupsProduction)
Диего
в свойствах класса можно делать условия?
Antonio
Диего
ну это к Alexandr вопрос )
Antonio
ну в моей вселенной точно
Диего
в моей тоже, может в кернель есть методы
Диего
для динамичного использования
Antonio
бред
У тебя PHP нормально воспримет такой код?
class A
{
public $v = (1=1)?1:0;
}
ThunderAL
*==
invariance
нет лол
Диего
ThunderAL
$ php -v
Antonio
ну вот,а вы мне даже костыли предлагали сделать по такому принципу =)
invariance
invariance
кек
invariance
я предлагал вариант, который сам юзаю
invariance
вполне себе
Antonio
Диего
не хочешь не буду ниче больше советовать )
invariance
invariance
о_О
invariance
конфиг не должен меняться во время исполнения
invariance
он и не меняется
Antonio
но для PHP это вызов функции config() О_о
ThunderAL
через провайдер — самый лучший способ, но мб будет сложно
всё остальное это или почти костыли или вообще хрень
Диего
ThunderAL
все данные о мидлверах должны быть в нужном файле ВСЕГДА
вынесение в другие места тебе грозит утопанием в говнокоде и магическом поведением программы
Диего
провайдеры на то и даны, что бы инициализировать тебе лару как тебе нужно
Диего
не смотри другие )
ThunderAL
ага)
ThunderAL
мой с тернарным опереатором это тупой, временный и быстрый способ
через мидлвэр — на века
Antonio
Диего
😕
ThunderAL
иди в App\Providers\AppServiceProvider и твори!
Antonio
сейчас я там наТВАРЬю