🧩
[Laravel] assertJsonPathで.(ドット/dot)を含むkey(添字)の値を検証する方法
概要
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