Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to enable Redis connection in PHPUnit in Laravel

I have a Laravel application that uses mysql as its main database and I also use some redis connection on some parts for faster loading of data.

Currently I'm creating unit tests using phpunit in laravel. However the method that I'm trying to create unit test with has redis connection - Redis::connection(). The expected assertion should be a 200 response but because of that redis connection it is returning 500 response. How can I enable redis on php unit so I can create a unit test for it?

my current phpunit.xml are configured like this:

<php>
   <server name="APP_ENV" value="testing"/>
   <server name="BCRYPT_ROUNDS" value="4"/>
   <server name="CACHE_DRIVER" value="array"/>
   <server name="DB_CONNECTION" value="mysql"/>
   <server name="DB_DATABASE" value="MY_DB_NAME"/>
   <server name="MAIL_MAILER" value="array"/>
   <server name="QUEUE_CONNECTION" value="sync"/>
   <server name="SESSION_DRIVER" value="array"/>
</php>

Here's the error log:

[2021-03-29 12:12:53] testing.ERROR: Please make sure the PHP Redis extension is installed and enabled. {"userId":84,"exception":"[object] (LogicException(code: 0): Please make sure the PHP Redis extension is installed and enabled. at /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php:77)
[stacktrace]
#0 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Support/helpers.php(433): Illuminate\\Redis\\Connectors\\PhpRedisConnector->Illuminate\\Redis\\Connectors\\{closure}(Object(Illuminate\\Support\\Facades\\Redis))
#1 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(105): tap(Object(Illuminate\\Support\\Facades\\Redis), Object(Closure))
#2 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(28): Illuminate\\Redis\\Connectors\\PhpRedisConnector->createClient(Array)
#3 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php(32): Illuminate\\Redis\\Connectors\\PhpRedisConnector->Illuminate\\Redis\\Connectors\\{closure}()
#4 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Redis/RedisManager.php(110): Illuminate\\Redis\\Connectors\\PhpRedisConnector->connect(Array, Array)
#5 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Redis/RedisManager.php(90): Illuminate\\Redis\\RedisManager->resolve('default')
#6 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(261): Illuminate\\Redis\\RedisManager->connection()
#7 /home/johndoe/bo2-dev/app/Http/Controllers/DataContentOfficerController.php(419): Illuminate\\Support\\Facades\\Facade::__callStatic('connection', Array)
#8 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\DataContentOfficerController->manual_qc_confirm()
#9 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('manual_qc_confi...', Array)
#10 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Routing/Route.php(239): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\DataContentOfficerController), 'manual_qc_confi...')
#11 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Routing/Route.php(196): Illuminate\\Routing\\Route->runController()
#12 /home/johndoe/bo2-dev/vendor/laravel/framework/src/Illuminate/Routing/Router.php(685): Illuminate\\Routing\\Route->run()
...
like image 387
saionachi Avatar asked Dec 07 '25 03:12

saionachi


1 Answers

If your local (the .env work) you should create one .env.testing and do PHPUnit tests using the --env=testing option like it says in docs.

like image 162
francisco Avatar answered Dec 08 '25 20:12

francisco



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!