🧩

[Laravel] assertJsonPathで.(ドット/dot)を含むkey(添字)の値を検証する方法

2022/09/10に公開

概要

assertJsonPath で値の検証をする際、通常は検証する値のパスを . 区切りで表現する。
key (添字)に .(ドット/ dot )が含まれていた場合、通常の方法では key の . と区切り文字の . を区別できず、値を検証できない。これを検証する方法を示す。

readouble.com > HTTPテスト 9.x Laravel > assertJsonPath

方法

以下の構造を例に方法を示す。

[
    "errors" => [
        [
            "extensions" => [
                "validation" => [
                    "input.password" => [
                        "Input.passwordの文字数は、8文字以上でなければいけません。"
                    ]
                ]
            ]
        ]
    ]
]

以下のようにドットを含むkeyの箇所はドット区切りではなく構造をそのまま書けば検証できる。

assertJsonPath('errors.0.extensions.validation', [
    'input.password' => [
      'Input.passwordの文字数は、8文字以上でなければいけません。'
    ],
]);

以下のような書き方では検証できなかった。

失敗パターン1

assertJsonPath('errors.0.extensions.validation.input.password', 'Input.passwordの文字数は、8文字以上でなければいけません。');

失敗パターン2

assertJsonPath("errors.0.extensions.validation.input\.password", 'Input.passwordの文字数は、8文字以上でなければいけません。');

失敗パターン3

assertJsonPath("errors.0.extensions.validation.\'input.password\'", 'Input.passwordの文字数は、8文字以上でなければいけません。');

Discussion