PHPUnit:传递使用toArray()转换的Zend_Db_Table_Row_Abstract时传递给setPost()的值无效“

时间:2010-10-06 20:48:00

标签: zend-framework phpunit php-5.3 zend-controller

以下代码失败会抛出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 个答案:

答案 0 :(得分:4)

您的计划项目中的任何列都可以为空吗?

setPost()方法为您在数组中传递的每个键/值对调用自身。但是如果任何值为null,则抛出异常。

您可能必须遍历数组,而setPost()只能循环非空值:

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

或者确保您在getScheduleItem()方法中从数据库中提取的行不包含空值。