PHPUnit: «Недопустимое значение, переданное setPost ()» при передаче Zend_Db_Table_Row_Abstract, преобразованного с помощью toArray () - PullRequest
1 голос
/ 07 октября 2010

Сбой следующего кода выдает исключение Zend_Controller_Exception («Недопустимое значение, переданное setPost (); должен быть либо массив значений, либо пара ключ / значение»)

/** 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);

Я сделалvar_dump () для обеспечения правильного типа $ fixtureArray и правильного форматирования ... без видимых проблем.

1 Ответ

4 голосов
/ 07 октября 2010

Обнуляются ли какие-либо столбцы в строке элемента расписания?

Метод setPost() вызывает себя для каждой пары ключ / значение, которую вы передаете в массиве. Но если любое значение равно нулю, оно выдает исключение.

Возможно, вам придется перебрать массив и setPost() только значения, которые не равны нулю:

$this->getRequest()->setMethod("POST");
foreach ($fixtureArray as $key => $value) {
  if ($value === null) { continue; }
  $this->getRequest()->setPost($key, $value);
}

Или убедитесь, что строка, которую вы выбираете из базы данных в вашем методе getScheduleItem(), не содержит нулей.

...