この記事はLaravelのResponseのAssertionを機能別にまとめて紹介しています。
利用しそうなものを主に紹介しており、全部を紹介しているわけではありません。
紹介していないものを参照したい場合は場合は本家参照(英語版)
ステータスコード
HTTPステータスを確認するassertionです。
// 指定したステータスコード
$res->assertStatus(200);
// 範囲
$res->assertSuccessful(); // 200 <=, <300
$res->assertServerError(); // 500 <= x < 600
// 200系
$res->assertOk(); // 200
$res->assertCreated(); // 201
$res->assertAccepted(); // 202
$res->assertNoContent($status = 204); // 204でありコンテンツがないこと
// 300系
$res->assertFound(); // 302
$res->assertMovedPermanently(); // 301
// 400系
$res->assertBadRequest(); // 400
$res->assertUnauthorized(); // 401
$res->assertPaymentRequired(); // 402
$res->assertForbidden(); // 403
$res->assertNotFound(); // 404
$res->assertMethodNotAllowed(); // 405
$res->assertRequestTimeout(); // 408
$res->assertConflict(); // 409
$res->assertGone(); // 410
$res->assertUnsupportedMediaType(); // 415
$res->assertUnprocessable(); // 422
$res->assertTooManyRequests(); // 429
// 500系
$res->assertInternalServerError(); //500
$res->assertServiceUnavailable(); //503
PHPクッキー系
クッキーのデータを確認するassertionです。
// 指定するクッキーが含まれている
$res->assertCookie($cookieName, $value = null);
// 指定するクッキーが含まれていない
$res->assertCookieMissing($cookieName);
// 指定するクッキーが含まれており、期限切れである
$res->assertCookieExpired($cookieName);
// 指定するクッキーが含まれており、期限が切れていない
$res->assertCookieNotExpired($cookieName);
// 指定する暗号化されていないクッキーが含まれている
$res->assertPlainCookie($cookieName, $value = null);
PHPヘッダー系
HTTPヘッダーを確認するasertionです。
// 指定するヘッダーと値が存在する
$res->assertHeader($headerName, $value = null);
// 指定するヘッダーが存在しない
$res->assertHeaderMissing($headerName);
// Locationヘッダーに指定するURIとなっている
$res->assertLocation($uri);
PHPコンテンツ確認
コンテンツ内のデータを確認するassertionです。コンテンツはJSONではなくても大丈夫です。
// 指定する文字列がレスポンスに含まれていること
$res->assertSee($value, $escaped = true);
//指定する文字列がレスポンステキストに含まれていること
$res->assertSeeText($value, $escaped = true);
// 指定する文字列がレスポンス内に順番に含まれていること
$res->assertSeeInOrder(array $values, $escaped = true);
// 指定する文字列がレスポンステキスト内に順番に含まれていること
$res->assertSeeTextInOrder(array $values, $escaped = true);
PHPコンテンツ確認 JSON系
コンテンツ内のJSONを確認するassertionです。
JSONデータの確認
// 完全一致する指定JSONデータが含まれている
$res->assertExactJson(array $data);
// 完全一致する指定JSONデータが含まれていない
$response->assertJsonMissingExact(array $data);
// 指定するJSONデータが含まれている
$res->assertJson(array $data, $strict = false);
// 指定するJSONデータが含まれていない
$res->assertJsonMissing(array $data);
// 指定するキーに予想されるアイテム数の配列がある
$res->assertJsonCount($count, $key = null);
// どこかに指定JSONデータが含まれている
$res->assertJsonFragment(['name' => '山田 太郎']);
PHPJSON内の型の確認
// レスポンスのJSONが、配列である
$res->assertJsonIsArray();
// レスポンスのJSONが、オブジェクトである
$res->assertJsonIsObject();
PHPパスの確認
// JSONに指定するパスに指定するデータが含まれていること
$res->assertJsonPath($path, $expectedValue);
// JSONに指定するパスが含まれていないこと
$res->assertJsonMissingPath($path);
// 指定のJSON構造を持っていること
$res->assertJsonStructure(array $structure);
PHPセッション系
セッションのデータを確認するassertionです。
// セッションに指定したデータが含まれている
$res->assertSessionHas($key, $value = null);
// クロージャも指定可能
$res->assertSessionHas($key, function (User $value) {
return $value->price === 500;
});
// セッションの一時保存されている入力配列に指定する値がある
$res->assertSessionHasInput($key, $value = null);
// クロージャも指定可能
$res->assertSessionHasInput($key, function (string $value) {
return Crypt::decryptString($value) === 'secret';
});
// セッションにキー/値ペアの指定配列が含まれている
$res->assertSessionHasAll(array $data);
// 指定する$keysのエラーがセッションに含まれている
$res->assertSessionHasErrors(
array $keys = [], $format = null, $errorBag = 'default'
);
// 指定する$keyのエラーがセッションに含まれている
$res->assertSessionHasErrorsIn($errorBag, $keys = [], $format = null);
// セッションにバリデーションエラーがない
$res->assertSessionHasNoErrors();
// 指定するキーのバリデーションエラーがセッションにない
$res->assertSessionDoesntHaveErrors($keys = [], $format = null, $errorBag = 'default');
// セッションに指定するキーが含まれていない
$response->assertSessionMissing($key);
PHPリダイレクト系
レスポンスがリダイレクトである場合の確認。
// 指定するURIへのリダイレクトである
$res->assertRedirect($uri = null);
// レスポンスが指定文字列を含むURIへリダイレクトされること
$res->assertRedirectContains($string);
// 指定した名前付きルートへリダイレクトすること
$res->assertRedirectToRoute($name, $parameters = []);
// 指定した署名付きルートへリダイレクトすること
$res->assertRedirectToSignedRoute($name = null, $parameters = []);
PHPデバッグ用
$res->dumpHeaders();
$res->dumpSession();
$res->dump();
PHP
コメント