Laravel 8 — Почему я получаю статус 422 — Ошибка необработанной сущности здесь?

#laravel #laravel-8

Вопрос:

У меня есть проект Laravel 8, в котором у меня есть этот автоматический тест:

     public function testCreateConvenioPagoDeProgramacionAdeudo()
    {
        $programacion = AdeudoProgramacion::select('adeudo_programacion.*')
            ->where('id', $this->idProgramacion)
            ->firstOrFail();

        $response = $this->withLoggedUser()->json("POST", "api/convenios/crearPorProgramacionDeAdeudos/$programacion->id");

        $response->assertCreated();
    }
 

Этот тест пытается создать некоторые объекты с помощью этого метода при вызове URL-адреса:

     public function storeAdeudoProgramacion(StoreConvenioPagoRequest $request, $idAdeudoProgramacion){
        $adeudo = AdeudoProgramacion::select('adeudo_programacion.*')->where('id', $idAdeudoProgramacion)->firstOrFail();
        $pagos = AdeudoPago::select("adeudo_pago.*")
            ->join('adeudo_programacion', 'adeudo_programacion.id', 'adeudo_pago.idProgramacion')
            ->where('adeudo_programacion.id', $idAdeudoProgramacion)->get();
        $monto = $pagos->sum('monto');
        $data = [
            'idEstatus' => ConvenioPagoEstatus::PENDIENTE,
            'comentarios' => ''
        ];
        $convenio = ConvenioPago::create(
            $data
        );

        if($convenio){
            // Se crean los movimientos a partir de los pagos de la programación
            $numero_pago = 1;
            foreach($pagos as $pago){
                $convenio_id = $convenio->id;
                $data_movimiento = [
                    'idConvenio' => $convenio_id,
                    'idEstatus' => ConvenioPagoMovimientoEstatus::PENDIENTE,
                    'numeroPago' => $numero_pago,
                    'monto' => $pago->monto,
                    'fechaPagoPlaneada' => $pago->fechaPagoPlaneada,
                    'fechaPagoReal' => $pago->fechaPagoReal,
                    'periodoInicio' => $pago->periodoInicio,
                    'periodoFinal' => $pago->periodoFinal,
                    'comentarios' => 'Pago número '.$numero_pago
                ];
                ConvenioPagoMovimiento::create(
                    $data_movimiento
                );
                $numero_pago = $numero_pago   1;
            }

            $aux = ConvenioPago::select(
                'convenio_pago.id',
                'convenio_pago_estatus.estatus',
                'convenio_pago_origen.origen',
                'relacion_laboral.idDerechohabiente',
                'relacion_laboral.id',
                'convenio_pago.idAdeudoProgramacion',
                'convenio_pago.monto',
                'convenio_pago.montoPagado',
                'convenio_pago.saldo',
                'convenio_pago.cantidadPagos',
                'convenio_pago.pagosRealizados'
            )
            ->join('convenio_pago_estatus', 'convenio_pago_estatus.id', 'convenio_pago.idEstatus')
            ->join('convenio_pago_origen', 'convenio_pago_origen.id', 'convenio_pago.idOrigen')
            ->join('relacion_laboral', 'relacion_laboral.id', 'convenio_pago.idRelacionLaboral')
            ->where('convenio_pago.id', $convenio->id)->first();
            $data = [
                'data' => $aux
            ];
            return response()->json($data, 201);
        }
        return $this->response->errorBadRequest();
    }
 

Я читал, что я мог получить эту ошибку из-за какой-то проверки, которая у меня где-то есть, но я не могу определить, где это может быть или где я мог бы искать.

Ответ №1:

Ответ 422, вероятно, вызван запросом вашей формы StoreConvenioPagoRequest , обрабатывающим ответ JSON. Поскольку это ответ JSON, ошибки проверки должны быть включены.

Если вы dd($response->json()) , вы должны быть в состоянии увидеть, что неверно.