2016-09-21 5 views
0

Ich versuche api mit Laravel 5.1 und phpunit für ein Login-Modul zu testen, die in 2 Teile Ausgabe läuft phpunit Tests auf laravel5.1

  • überprüfen E-Mail-Adresse
  • Passwort erhalten geteilt und authentifizieren
  • Jetzt Im ersten Teil wird ein api aufgerufen, der den response.error als false sendet, für den der geschriebene Testfallcode folgt.

    Aber beim Ausführen des Testformulars das Terminal (Vendor/bin/phpunit), erhalte ich den folgenden Fehler.

    Time: 947 ms, Memory: 14.75MB 
    
    There was 1 failure: 
    
    1) LoginPageTest::testExample 
    Failed asserting that 500 matches expected 200. 
    
    project/tests/LoginPageTest.php:32 
    
    FAILURES! 
    Tests: 1, Assertions: 1, Failures: 1. 
    

    Wenn ich durch Postbote teste ich bekomme das gewünschte Ergebnis im JSON-Format. Hat es etwas mit meinem Code oder PHP zu tun?

    Im Folgenden ist der Quellcode des Controllers/route i

    $user_email = $request->get('email'); 
    $user = $this->_user->findByField(
         'email', $user_email, 
         ['email', 'is_active'] 
        )->first(); 
    if (! empty($user)) { 
        $response = view('auth/password', compact('user_email'))->render(); 
    
        return $this->sendSuccess('proceed for password', $response, 200); 
    } 
    

    unten am Zugriff ist der Stapel rückverfolgbar:

    [2016-09-26 19:58:48] testing.ERROR: exception 'PDOException' with message 'could not find driver' in /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:55 
    Stack trace: 
    #0 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php(55): PDO->__construct('pgsql:host=127....', 'homestead', 'secret', Array) 
    #1 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php(36): Illuminate\Database\Connectors\Connector->createConnection('pgsql:host=127....', Array, Array) 
    #2 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(60): Illuminate\Database\Connectors\PostgresConnector->connect(Array) 
    #3 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php(49): Illuminate\Database\Connectors\ConnectionFactory->createSingleConnection(Array) 
    #4 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(175): Illuminate\Database\Connectors\ConnectionFactory->make(Array, 'pgsql') 
    #5 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(67): Illuminate\Database\DatabaseManager->makeConnection('pgsql') 
    #6 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(3224): Illuminate\Database\DatabaseManager->connection(NULL) 
    #7 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(3190): Illuminate\Database\Eloquent\Model::resolveConnection(NULL) 
    #8 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1870): Illuminate\Database\Eloquent\Model->getConnection() 
    #9 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1813): Illuminate\Database\Eloquent\Model->newBaseQueryBuilder() 
    #10 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1787): Illuminate\Database\Eloquent\Model->newQueryWithoutScopes() 
    #11 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(3442): Illuminate\Database\Eloquent\Model->newQuery() 
    #12 /home/hireajackal/work/hireajackal/vendor/prettus/l5-repository/src/Prettus/Repository/Eloquent/BaseRepository.php(379): Illuminate\Database\Eloquent\Model->__call('where', Array) 
    #13 /home/hireajackal/work/hireajackal/vendor/prettus/l5-repository/src/Prettus/Repository/Eloquent/BaseRepository.php(379): App\User->where('email', '=', '[email protected]') 
    #14 /home/hireajackal/work/hireajackal/app/Http/Controllers/Auth/AuthController.php(103): Prettus\Repository\Eloquent\BaseRepository->findByField('email', '[email protected]', Array) 
    #15 [internal function]: App\Http\Controllers\Auth\AuthController->getUser(Object(App\Http\Requests\Validations\GetUserRequest)) 
    #16 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(256): call_user_func_array(Array, Array) 
    #17 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(164): Illuminate\Routing\Controller->callAction('getUser', Array) 
    #18 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(112): Illuminate\Routing\ControllerDispatcher->call(Object(App\Http\Controllers\Auth\AuthController), Object(Illuminate\Routing\Route), 'getUser') 
    #19 [internal function]: Illuminate\Routing\ControllerDispatcher->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) 
    #20 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(139): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #21 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
    #22 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #23 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(114): Illuminate\Pipeline\Pipeline->then(Object(Closure)) 
    #24 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(69): Illuminate\Routing\ControllerDispatcher->callWithinStack(Object(App\Http\Controllers\Auth\AuthController), Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'getUser') 
    #25 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'App\Http\Contro...', 'getUser') 
    #26 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/Route.php(134): Illuminate\Routing\Route->runWithCustomDispatcher(Object(Illuminate\Http\Request)) 
    #27 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/Router.php(708): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request)) 
    #28 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) 
    #29 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(139): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #30 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
    #31 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #32 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/Router.php(710): Illuminate\Pipeline\Pipeline->then(Object(Closure)) 
    #33 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/Router.php(675): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) 
    #34 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Routing/Router.php(635): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) 
    #35 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(236): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) 
    #36 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) 
    #37 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(139): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #38 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) 
    #39 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): call_user_func(Object(Closure), Object(Illuminate\Http\Request)) 
    #40 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(122): Illuminate\Pipeline\Pipeline->then(Object(Closure)) 
    #41 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(87): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) 
    #42 /home/hireajackal/work/hireajackal/vendor/laravel/framework/src/Illuminate/Foundation/Testing/CrawlerTrait.php(394): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) 
    #43 /home/hireajackal/work/hireajackal/tests/LoginPageTest.php(30): Illuminate\Foundation\Testing\TestCase->call('POST', '/check-user', Array) 
    #44 [internal function]: LoginPageTest->testExample() 
    #45 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/src/Framework/TestCase.php(909): ReflectionMethod->invokeArgs(Object(LoginPageTest), Array) 
    #46 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/src/Framework/TestCase.php(768): PHPUnit_Framework_TestCase->runTest() 
    #47 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/src/Framework/TestResult.php(612): PHPUnit_Framework_TestCase->runBare() 
    #48 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/src/Framework/TestCase.php(724): PHPUnit_Framework_TestResult->run(Object(LoginPageTest)) 
    #49 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/src/Framework/TestSuite.php(747): PHPUnit_Framework_TestCase->run(Object(PHPUnit_Framework_TestResult)) 
    #50 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/src/Framework/TestSuite.php(747): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult)) 
    #51 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(440): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult)) 
    #52 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/src/TextUI/Command.php(149): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array) 
    #53 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/src/TextUI/Command.php(100): PHPUnit_TextUI_Command->run(Array, true) 
    #54 /home/hireajackal/work/hireajackal/vendor/phpunit/phpunit/phpunit(47): PHPUnit_TextUI_Command::main() 
    #55 {main} 
    
    +0

    Haben Sie etwas dagegen, den Code zu teilen, der von diesem Testfall und dem Ausnahmeprotokoll abgedeckt wird? –

    +0

    Ich glaube, du hast nicht verstanden, was ich meine. Können Sie Ihre Frage aktualisieren und die zu testende Controller- oder Routenquelle hinzufügen? aka '/ check-user' –

    +0

    Pls check oben habe ich den Quellcode aus der Route Controller enthalten. Beim Testen dieses Postboten bekomme ich eine erfolgreiche Antwort von 200. –

    Antwort

    0

    Sieht aus wie Ihre lokale Konfiguration nicht über PDO und Aus diesem Grund erhalten Sie 500 Tests.

    Versuchen Sie, eine Verbindung zu Homestead herzustellen und Ihre Tests dort durchzuführen. Das sollte den Trick machen.

    Installieren von fehlenden Abhängigkeiten zu lokalen Umgebung ist auch eine Lösung.

    +0

    Wenn ich Tests von Homestead ausführen, kann ich die Antwort nicht bestätigen. Es sendet mir das Antwortobjekt und das ist alles. $ response = $ this-> call ('POST', '/ check-user', ['email' => '[email protected]']); $ this-> assertEquals (200, $ response-> status()); assert wird nie ausgeführt. –

    +0

    Versuchen Sie also, Datenbanktreiber lokal zu installieren oder das Problem zu beheben. –

    Verwandte Themen