phpunit:zend_db_table_row_abstractを通過すると、「setpost()に渡された無効な値」toarray()を使用して変換されます

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

質問

次のコードがZend_Controller_exceptionをスローに失敗します (「setpost()に渡された無効な値(値の配列またはkey/valueペアのいずれかである必要があります」)

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

$ fixTurearrayが正しいタイプであることを確認するためにvar_dump()を行い、適切にフォーマットされています...目に見える問題はありません。

役に立ちましたか?

解決

スケジュール項目の列のいずれかがnullableされていますか?

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