[Laravel]レスポンスのAssertionまとめ

Laravel Laravel

この記事は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' => '山田 太郎']);
PHP

JSON内の型の確認

// レスポンスの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

Follow me!

コメント

PAGE TOP
タイトルとURLをコピーしました