PHPUnit: “Valor no válido pasado a setPost ()” al pasar Zend_Db_Table_Row_Abstract convertidos utilizando toArray ()
-
28-09-2019 - |
Pregunta
falla El siguiente código tiros un Zend_Controller_Exception ( "valor no válido pasado a setPost (); debe ser o bien matriz de valores o de pares de claves / valor")
/** Model_Audit_Luminaire */
$luminaireModel = new Model_Audit_Luminaire();
if (!$fixture = $luminaireModel->getScheduleItem($scheduleId)) {
$this->fail('Could not retrieve fixture from database');
}
$fixtureArray = $fixture->toArray();
$this->getRequest()
->setMethod('POST')
->setPost($fixtureArray);
Hice un var_dump () para asegurar $ fixtureArray era el tipo correcto y el formato correcto ... no hay problemas visibles.
Solución
¿Alguna de las columnas en su horario línea de artículo anulable?
El método setPost()
llama a sí mismo para cada par clave / valor que se pasa en una matriz. Pero si ningún valor es nulo, se produce una excepción.
puede tener que bucle sobre la matriz y setPost()
sólo los valores que no son null:
$this->getRequest()->setMethod("POST");
foreach ($fixtureArray as $key => $value) {
if ($value === null) { continue; }
$this->getRequest()->setPost($key, $value);
}
O de lo contrario asegurarse de que la fila de hacer salir de la base de datos en su método de getScheduleItem()
no contiene valores nulos.