#!/usr/bin/env php prepareStartExtrasTest($emptyData)) && p('status') && e('doing'); // 步骤2:传入已有status的form对象,检查status是否被覆盖 $dataWithStatus = form::data(array())->add('status', 'wait'); r($programTest->prepareStartExtrasTest($dataWithStatus)) && p('status') && e('doing'); // 步骤3:检查是否正确添加lastEditedBy字段 $testData = form::data(array()); r($programTest->prepareStartExtrasTest($testData)) && p('lastEditedBy') && e('admin'); // 步骤4:检查lastEditedDate字段是否为当前时间格式 $dateData = form::data(array()); $result = $programTest->prepareStartExtrasTest($dateData); $isDateValid = (bool)preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/', $result->lastEditedDate); r($isDateValid) && p() && e('1'); // 步骤5:传入包含其他字段的form对象,检查原有字段是否保留 $dataWithField = form::data(array())->add('testField', 'test123'); r($programTest->prepareStartExtrasTest($dataWithField)) && p('testField') && e('test123'); // 步骤6:传入包含多个自定义字段的form对象,验证所有字段保留 $multiFieldData = form::data(array())->add('field1', 'customValue1')->add('field2', 'customValue2'); $resultMulti = $programTest->prepareStartExtrasTest($multiFieldData); r($resultMulti) && p('field1,field2') && e('customValue1,customValue2'); // 步骤7:检查对象的所有必需字段是否都存在 $checkRequiredData = form::data(array()); $resultRequired = $programTest->prepareStartExtrasTest($checkRequiredData); $requiredFields = array(); if(isset($resultRequired->status)) $requiredFields[] = 'status'; if(isset($resultRequired->lastEditedBy)) $requiredFields[] = 'lastEditedBy'; if(isset($resultRequired->lastEditedDate)) $requiredFields[] = 'lastEditedDate'; r(implode(',', $requiredFields)) && p() && e('status,lastEditedBy,lastEditedDate');