PHPUnit: « valeur non valide transmis à setPost () » lors du passage Zend_Db_Table_Row_Abstract convertis à l'aide toArray ()
-
28-09-2019 - |
Question
Le code suivant ne jette une Zend_Controller_Exception ( "valeur non valide transmis à setPost (); doit être soit tableau de valeurs ou d'une paire de clé / valeur")
/** 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);
Je l'ai fait un var_dump () pour assurer $ fixtureArray était le type correct et formaté correctement ... aucun problème visible.
La solution
Est-ce que des colonnes de votre article horaire ligne annulable?
La méthode setPost()
appelle lui-même pour chaque paire clé / valeur que vous passez dans un tableau. Mais si une valeur est nulle, elle renvoie une exception.
Vous pouvez avoir à boucle sur le tableau et setPost()
uniquement des valeurs qui ne sont pas nulles:
$this->getRequest()->setMethod("POST");
foreach ($fixtureArray as $key => $value) {
if ($value === null) { continue; }
$this->getRequest()->setPost($key, $value);
}
Ou bien faire en sorte que la ligne que vous rapportez de la base de données dans votre méthode de getScheduleItem()
ne contient pas de valeurs NULL.