Почему из модульного теста в Laravel, если я выполняю следующий запрос, декодирую ответ json, он возвращается в виде пустого массива:
$response = $this->get(route('api.inspections.get', [
"id" => $inspection->id
]));
$apiInspection = $response->json(); # Empty array :(
И все же выполняет самый простой запрос get длятот же URL дает мне хороший ответ json.
$inspection = file_get_contents(route('api.inspections.get', [
"id" => $inspection->id
]));
$inspection = json_decode($inspection); # The expected inspection stdClass
Спасибо
Редактировать: я обнаружил, почему это происходит. Похоже, из устройстватесты, неявное связывание модели маршрута Laravels, которое я использовал, терпит неудачу.Поэтому, хотя я думал, что это должен был бы вернуть объект json (потому что это было из Почтальона), он фактически возвращал ноль из-за того, что, по-видимому, является ошибкой в Laravel.
# So this api controller action works from CURL, Postman etc - but fails from the phpunit tests
public function getOne(InspectionsModel $inspection) {
return $inspection;
}
Так что мне пришлось изменить это на
public function getOne(Request $request) {
return InspectionsModel::find($request->segment(3));
}
Так что я потратил час на эту простую задачу только потому, что подумал: «Это ясно работает, я вижу это в Почтальоне».