phpunit:“传递zend_db_table_row_abstract使用toarray()经过zend_db_table_abstract()时,传递给setPost()的无效值”
-
28-09-2019 - |
题
以下代码失败会抛出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()
方法不包含零值。
不隶属于 StackOverflow