困っていること
Laravelで作成したAPIをPHPUnitでテストしようとしています。しかしブラウジングできるにも関わらず、テスト上では全て500エラーが返ってきてしまいます。なぜ?
PHPUnit実行結果
プロジェクトディレクトリ内でphpunitを実行した結果です。
API自体は生きている模様
前提
- Laravel 5.4
- homesteadで環境構築
ルーティング
PHP
1use Illuminate\Http\Request; 2use App\Models\Rental; 3 4Route::group(['middleware' => 'api'], function() { 5 Route::resource('rentals', 'RentalController'); 6});
コントローラー
php
1namespace App\Http\Controllers; 2 3use Illuminate\Http\Request; 4use App\Models\Rental; 5 6class RentalController extends Controller 7{ 8 public function index(Request $request) 9 { 10 return Rental::take(5)->get(); 11 } 12 public function show($id) 13 { 14 return Rental::find($id); 15 } 16}
phpunit.xml
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<phpunit backupGlobals="false" 3 backupStaticAttributes="false" 4 bootstrap="vendor/autoload.php" 5 colors="true" 6 convertErrorsToExceptions="true" 7 convertNoticesToExceptions="true" 8 convertWarningsToExceptions="true" 9 processIsolation="false" 10 stopOnFailure="false"> 11 <testsuites> 12 <testsuite name="Feature"> 13 <directory suffix="Test.php">./tests/Feature</directory> 14 </testsuite> 15 16 <testsuite name="Unit"> 17 <directory suffix="Test.php">./tests/Unit</directory> 18 </testsuite> 19 </testsuites> 20 <filter> 21 <whitelist processUncoveredFilesFromWhitelist="true"> 22 <directory suffix=".php">./app</directory> 23 </whitelist> 24 </filter> 25 <php> 26 <env name="APP_ENV" value="testing"/> 27 <env name="DB_CONNECTION" value="mysql"/> 28 <env name="DB_DATABASE" value="sample_test"/> 29 <env name="CACHE_DRIVER" value="array"/> 30 <env name="SESSION_DRIVER" value="array"/> 31 <env name="QUEUE_DRIVER" value="sync"/> 32 </php> 33</phpunit>
config/database.php
php
1//... 2'connections' => [ 3 4 'sqlite' => [ 5 'driver' => 'sqlite', 6 'database' => env('DB_DATABASE', database_path('database.sqlite')), 7 'prefix' => '', 8 ], 9 10 'mysql' => [ 11 'driver' => 'mysql', 12 'host' => env('DB_HOST', '127.0.0.1'), 13 'port' => env('DB_PORT', '3306'), 14 'database' => env('DB_DATABASE', 'sample'), 15 'username' => env('DB_USERNAME', 'homestead'), 16 'password' => env('DB_PASSWORD', 'secret'), 17 'unix_socket' => env('DB_SOCKET', ''), 18 'charset' => 'utf8mb4', 19 'collation' => 'utf8mb4_unicode_ci', 20 'prefix' => '', 21 'strict' => true, 22 'engine' => null, 23 ],] 24//...
tests/Feature/RentalTest.php
php
1namespace Tests\Feature; 2 3use Tests\TestCase; 4use Illuminate\Foundation\Testing\WithoutMiddleware; 5use Illuminate\Foundation\Testing\DatabaseMigrations; 6 7class RentalTest extends TestCase 8{ 9 10 public function testBasicTest() 11 { 12 $response = $this->get('/api/rentals')->assertStatus(200); 13 } 14 15}
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。