phpunit:“传递zend_db_table_row_abstract使用toarray()经过zend_db_table_abstract()时,传递给setPost()的无效值”

StackOverflow https://stackoverflow.com/questions/3876743

以下代码失败会抛出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是正确的类型,并正确格式化了……没有可见的问题。

有帮助吗?

解决方案

您的时间表项目行中的任何列是否可无效?

setPost() 方法将自己称为每个键/值对,您将通过数组中传递。但是,如果任何值为null,则会引发异常。

您可能必须在数组上循环 setPost() 只有非记录的值:

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

否则请确保您从数据库中获取的行 getScheduleItem() 方法不包含零值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top