GETリクエストのテストコードを書き、コントローラーから返されるデータを確認します。
テスト対象(Controller)
テスト対象のコントローラーです。
指定idのTodoを返します。
<?php
namespace App\Http\Controllers;
use App\Models\Todo;
use Illuminate\Http\Request;
class TodoController extends Controller
{
public function getTodo(Request $request)
{
return Todo::find($request['id']);
}
}
テストコード
コントローラーのテストコードです。
GETリクエストをコントローラーに送り、レスポンスを判定します。
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ExampleTest extends TestCase
{
public function test_getTodo(): void
{
$response = $this->get(route('todo', ['id' => 1]));
$response->dump();
$response->assertJson(['id' => 1]); // PASS
$response->assertExactJson(['id' => 1, 'name' => 'test', 'isComplete' => 0]); // PASS
//$response->assertExactJson(['id' => 1, 'name' => 'test', 'isComplete' => 1]); // FAIL
}
}
GETクエリパラメータ
GETのクエリパラメータをコントローラーに渡す際には、route()というヘルパー関数を使います。
第2引数にパラメーターを指定します。
Assert
レスポンスがJSONで返されるので、assertJson()またはassertExactJson()でテストの判定を行います。
assertJson()は、指定したデータが含まれるかの確認を行います。
一方、assertExactJson()は、指定したデータと完全に一致するかの確認を行います。
なので、テスト判定は、assertJson()のほうが緩いです。
GETのレスポンスを確認するテストコードを書き、テストを実行しました。
コメント