ページネーションを使用して Laravel リソースを返す API エンドポイントをテストしています
public function test_showing_all_plans(): void
{
$plans = Plan::where('is_active', true)
->paginate(10);
$resource = PlansResource::collection($plans);
$this->withHeaders([
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'AppKey' => 5,
])
->json('GET', '/api/customer/plans')
->assertStatus(200)
->assertExactJson([
$resource->response()->getData(true),
]);
}
私の問題は、エンドポイントのパスが返されたリソースと等しくないため、返された結果が同じではないことです。
これは、エンドポイントから返された結果です。
"links": {
"first": "http://www.site.local/api/customer/plans?page=1",
"last": "http://www.site.local/api/customer/plans?page=3",
"next": "http://www.site.local/api/customer/plans?page=2",
"prev": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"path": "http://www.site.local/api/customer/plans",
"per_page": 10,
"to": 10,
"total": 24
}
これは、リソース ' $resource->response()->getData(true)
'から返されたコードです
"links": {
"first": "http://www.site.local?page=1",
"last": "http://www.site.local?page=3",
"next": "http://www.site.local?page=2",
"prev": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 3,
"path": "http://www.site.local",
"per_page": 10,
"to": 10,
}
どうすればエンドポイントを自分のコードに渡すことができますか、またはどうすればそれらを等しくすることができますか?Laravelリソースをテストする適切な方法はありますか?