Level 73
So in your phpunit.xml file you should set the database connection to be used, you can use this, below the env add this:
<server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_DATABASE" value=":memory:"/>
1 like
Hi,
I am working on Laravel 5.5 Phpunit test. I am getting error ** PDO Exception: could not find driver** Laravel= 5.5 Php = 7.1.3 Phpunit = 7.5
Can anyone suggest me how to solve this issue?
Thanks in advance
error:PDOException: could not find driver in /home/workland/Downloads/project/marketplace-api/src/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:27\n
Stack trace:\n
#0 /home/workland/Downloads/project/marketplace-api/src/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(27): PDO->__construct('mysql:host=192....', 'root', 'somemarketplace', Array)\n
#1 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(64): Doctrine\DBAL\Driver\PDOConnection->__construct('mysql:host=192....', 'root', 'somemarketplace', Array)\n
#2 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(43): Illuminate\Database\Connectors\Connector->createPdoConnection('mysql:host=192....', 'root', 'somemarketplace', Array)\n
#3 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php(24): Illuminate\Database\Connectors\Connector->createConnection('mysql:host=192....', Array, Array)\n
#4 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(183): Illuminate\Database\Connectors\MySqlConnector->connect(Array)\n
#5 [internal function]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors\{closure}()\n
#6 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Database/Connection.php(915): call_user_func(Object(Closure))\n
#7 /home/workland/Downloads/project/marketplace-api/src/app/Http/Controllers/AccountController.php(46): Illuminate\Database\Connection->getPdo()\n
#8 /home/workland/Downloads/project/marketplace-api/src/app/Http/Controllers/AccountController.php(114): App\Http\Controllers\AccountController->insertCompanyDescription(Object(Illuminate\Http\Request), 58010)\n
#9 [internal function]: App\Http\Controllers\AccountController->create(Object(Illuminate\Http\Request))\n
#10 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)\n
#11 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\Routing\Controller->callAction('create', Array)\n
#12 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\AccountController), 'create')\n
#13 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Route.php(169): Illuminate\Routing\Route->runController()\n
#14 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\Routing\Route->run()\n
#15 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#16 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#17 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))\n
#18 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))\n
#19 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(57): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#20 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Routing\Middleware\ThrottleRequests->handle(Object(Illuminate\Http\Request), Object(Closure), 60, '1')\n
#21 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))\n
#22 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#23 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Router.php(660): Illuminate\Pipeline\Pipeline->then(Object(Closure))\n
#24 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Router.php(635): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))\n
#25 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Router.php(601): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))\n
#26 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Router.php(590): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))\n
#27 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))\n
#28 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))\n
#29 /home/workland/Downloads/project/marketplace-api/src/app/Http/Middleware/CorsMiddleware.php(32): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#30 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): App\Http\Middleware\CorsMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))\n
#31 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))\n
#32 /home/workland/Downloads/project/marketplace-api/src/app/Http/Middleware/ParseMultipartFormDataInputForNonPostRequests.php(21): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#33 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): App\Http\Middleware\ParseMultipartFormDataInputForNonPostRequests->handle(Object(Illuminate\Http\Request), Object(Closure))\n
#34 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))\n
#35 /home/workland/Downloads/project/marketplace-api/src/vendor/fideloper/proxy/src/TrustProxies.php(56): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#36 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))\n
#37 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))\n
#38 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#39 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))\n
#40 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))\n
#41 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#42 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))\n
#43 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))\n
#44 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#45 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))\n
#46 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))\n
#47 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#48 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))\n
#49 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))\n
#50 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))\n
#51 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure))\n
#52 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))\n
#53 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php(345): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))\n
#54 /home/workland/Downloads/project/marketplace-api/src/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php(317): Illuminate\Foundation\Testing\TestCase->call('post', 'http://192.168....', Array, Array, Array, Array, '{"email":"workl...')\n
#55 /home/workland/Downloads/project/marketplace-api/src/tests/Unit/AccountControllerTest.php(46): Illuminate\Foundation\Testing\TestCase->json('post', 'http://192.168....', Array)\n
#56 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1154): Tests\Unit\AccountControllerTest->testCreateTest()\n
#57 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(842): PHPUnit\Framework\TestCase->runTest()\n
#58 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/Framework/TestResult.php(693): PHPUnit\Framework\TestCase->runBare()\n
#59 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(796): PHPUnit\Framework\TestResult->run(Object(Tests\Unit\AccountControllerTest))\n
#60 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(746): PHPUnit\Framework\TestCase->run(Object(PHPUnit\Framework\TestResult))\n
#61 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(746): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))\n
#62 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(746): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))\n
#63 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(652): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))\n
#64 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/TextUI/Command.php(206): PHPUnit\TextUI\TestRunner->doRun(Object(PHPUnit\Framework\TestSuite), Array, true)\n
#65 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/src/TextUI/Command.php(162): PHPUnit\TextUI\Command->run(Array, true)\n
#66 /home/workland/Downloads/project/marketplace-api/src/vendor/phpunit/phpunit/phpunit(61): PHPUnit\TextUI\Command::main()\n
#67 {main}\n
This is my AccountControllerTest test class
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use App\Http\Controllers\AccountController;
use Exception;
class AccountControllerTest extends TestCase
{
public function testCreateTest()
{
$uniqueEmailAddress = "test_".rand(1000, 9999)."@gmail.com";
$jsonArr = array();
$jsonArr['email'] = $uniqueEmailAddress;
$jsonArr['company_name'] = "test_47";
$jsonArr['address'] = "XYZ";
$jsonArr['service_type'] = 'partner';
$jsonArr['account_type'] = 'seller';
$jsonArr['language'] = 'en';
$jsonArr['phone'] = '00000000000';
$response = $this->withHeaders([
'Content-type' => 'application/json'
])->json('POST', '/account', $jsonArr);
}
This is my AccountController
<?php
use DB;
public function create($request)
{
if ($request->company_description_en) {
$values = array('account_id' => 1,'company_description'
=> $request->company_description_en, 'locale' => 'en');
DB::table('account_translations')->insert($values);
}
if ($request->company_description_fr) {
$values = array('account_id' => 1,'company_description'
=> $request->company_description_fr, 'locale' => 'fr');
DB::table('account_translations')->insert($values);
}
}
This is my env File
APP_NAME= Marketplace
APP_ENV= local
APP_KEY= base64:PMwGGZXtY+8WmiLWKWD4HCehn6uAztQZg2JLtxsWm9c=
APP_DEBUG= 'TRUE'
APP_LOG_LEVEL= debug
APP_URL= http://localhost
DB_CONNECTION = mysql
DB_HOST = 192.168.1.3
DB_PORT = 33062
DB_DATABASE = marketplace
DB_USERNAME = root
DB_PASSWORD = somemarketplace
This is config/database.php
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/
'default' => env('DB_CONNECTION', 'mysql'),
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Laravel is shown below to make development simple.
|
|
| All database work in Laravel is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'marketplace'),
'username' => env('DB_USERNAME', 'workland'),
'password' => env('DB_PASSWORD', 'workland'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],
],
/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk haven't actually been run in the database.
|
*/
'migrations' => 'migrations',
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer set of commands than a typical key-value systems
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
];
This is phpunit.xml file
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
Please or to participate in this conversation.