Laravel 8 - 为什么我会在这里收到状态 422 - 无法处理的实体错误?

时间:2021-06-21 23:33:25

标签: 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 个答案:

答案 0 :(得分:2)

422 响应可能是由您的表单请求 false 处理 JSON 响应引起的。因为它是一个 JSON 响应,所以应该包括验证错误。

如果您StoreConvenioPagoRequest,您应该能够看到什么是无效的。