- フロントにてaxios.getの引数にオブジェクトを指定して呼び出すapiがある(絞り込み検索機能とか)
- Laravelのテストコードを書きたい
- 書き方は?
結論
実際にAPIを叩いた時のヘッダー情報を開発者モードから見ればいい
F12(開発者モードを開く) > ネットワーク > 名前 より該当APIを選択 > ヘッダー > リクエストをコピー
一瞬%
がたくさん含まれていて文字化けしているようにも見えるが、エディターに貼り付ければちゃんとした文字になる。
自分の場合はこんな感じになった。
/api/inquiries/searchDetail?detailSearchKey={"type":"","operator":"","key":"aaa","serial":"","inquiryId":""}&page=1
テストケースで呼び出す時には、こんなふうに書いてあげればいいわけやな。
テストの書き方
//プロジェクトディレクトリ/tests/Feature/InquiriesTest.php
//中略
/**
* @test
*/
public function 詳細検索()
{
$response = $this->get('/api/inquiries/searchDetail?detailSearchKey={"type":"","operator":"","key":"aaa","serial":"","inquiryId":""}&page=1');
$response->assertStatus(200);//そもそもメソッドが通るか
//こんなキーを含んだオブジェクトが返ってくるはずだよな?
$response->assertJsonStructure([
'data'=>[
'*' => [
'id',
'created_at',
'updated_at',
'date',
'time',
'dealer',
'questioner',
'phoneNumber',
'phoneNumberWithoutHyphen',
'customer',
'kinds',
'question',
'remote',
'authorizer',
'satisfaction',
'operator_id',
'operatorName',
'operatorIcon',
'inquiry_id',
'answer',
'serial',
'type',
'anchor',
'previewAnchor',
]
]
]);
json_decode($response->content(), true);
}
//中略
なるほどな、phpから見たら連想配列なので
引数は
{"type":"","operator":"","key":"aaa","serial":"","inquiryId":""}
みたいな感じで中括弧で囲んであげるわけか。
今回はメモ書き程度。
テストのやり方についてはまたまとまったら書くかも。