diff --git a/module/testcase/test/lib/testcasezen.unittest.class.php b/module/testcase/test/lib/testcasezen.unittest.class.php index 7e9dd3c601..ccbe3f0f8c 100755 --- a/module/testcase/test/lib/testcasezen.unittest.class.php +++ b/module/testcase/test/lib/testcasezen.unittest.class.php @@ -3316,4 +3316,70 @@ class testcaseZenTest } } + /** + * Test prepareReviewData method. + * + * @param int $caseID + * @param object $oldCase + * @param array $postData + * @access public + * @return bool|object|array + */ + public function prepareReviewDataTest(int $caseID, object $oldCase, array $postData = array()): bool|object|array + { + global $tester; + + // 保存原始POST数据 + $originalPost = $_POST; + + try { + // 清除之前的错误 + dao::$errors = array(); + + // 设置POST数据 + $_POST = array(); + foreach($postData as $key => $value) + { + $_POST[$key] = $value; + } + + // 获取testcase的zen对象实例 + $zenClass = initReference('testcase'); + $zenInstance = $zenClass->newInstance(); + + // 使用反射调用protected方法 + $reflection = new ReflectionClass($zenInstance); + $method = $reflection->getMethod('prepareReviewData'); + $method->setAccessible(true); + + // 调用方法 + $returnValue = $method->invoke($zenInstance, $caseID, $oldCase); + + // 恢复原始POST数据 + $_POST = $originalPost; + + // 如果返回false并且有错误,返回错误信息 + if($returnValue === false && dao::isError()) + { + return dao::getError(); + } + + return $returnValue; + } catch (EndResponseException $e) { + // 恢复原始POST数据 + $_POST = $originalPost; + // EndResponseException通常表示正常的流程控制,检查是否有dao错误 + if(dao::isError()) return dao::getError(); + return false; + } catch (Exception $e) { + // 恢复原始POST数据 + $_POST = $originalPost; + return array('exception' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()); + } catch (Error $e) { + // 恢复原始POST数据 + $_POST = $originalPost; + return array('error' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()); + } + } + } diff --git a/module/testcase/test/zen/preparereviewdata.php b/module/testcase/test/zen/preparereviewdata.php new file mode 100755 index 0000000000..0a069049c2 --- /dev/null +++ b/module/testcase/test/zen/preparereviewdata.php @@ -0,0 +1,102 @@ +#!/usr/bin/env php +id = 1; +$oldCase1->status = 'wait'; + +$oldCase2 = new stdClass(); +$oldCase2->id = 2; +$oldCase2->status = 'normal'; + +$oldCase3 = new stdClass(); +$oldCase3->id = 3; +$oldCase3->status = 'wait'; + +$oldCase4 = new stdClass(); +$oldCase4->id = 4; +$oldCase4->status = 'normal'; + +$oldCase5 = new stdClass(); +$oldCase5->id = 5; +$oldCase5->status = 'wait'; + +// 测试数据1: 评审通过 +$postData1 = array( + 'result' => 'pass', + 'reviewedBy' => array('admin'), + 'reviewedDate' => '2024-01-15', + 'comment' => '评审通过', + 'uid' => '' +); + +// 测试数据2: 评审不通过 +$postData2 = array( + 'result' => 'fail', + 'reviewedBy' => array('admin'), + 'reviewedDate' => '2024-01-15', + 'comment' => '需要修改', + 'uid' => '' +); + +// 测试数据3: 未选择评审结果 +$postData3 = array( + 'result' => '', + 'reviewedBy' => array('admin'), + 'reviewedDate' => '2024-01-15', + 'uid' => '' +); + +// 测试数据4: 多个评审人员 +$postData4 = array( + 'result' => 'pass', + 'reviewedBy' => array('admin', 'user1', 'user2'), + 'reviewedDate' => '2024-01-15', + 'comment' => '多人评审通过', + 'uid' => '' +); + +// 测试数据5: 单个评审人员 +$postData5 = array( + 'result' => 'pass', + 'reviewedBy' => array('admin'), + 'reviewedDate' => '2024-01-15', + 'comment' => '单人评审通过', + 'uid' => '' +); + +r($testcaseTest->prepareReviewDataTest(1, $oldCase1, $postData1)) && p('status,result') && e('normal,pass'); +r($testcaseTest->prepareReviewDataTest(2, $oldCase2, $postData2)) && p('status,result') && e('normal,fail'); +r($testcaseTest->prepareReviewDataTest(3, $oldCase3, $postData3)) && p() && e('0'); +r($testcaseTest->prepareReviewDataTest(4, $oldCase4, $postData4)) && p('status,reviewedBy') && e('normal,admin,user1,user2'); +r($testcaseTest->prepareReviewDataTest(5, $oldCase5, $postData5)) && p('status,reviewedBy') && e('normal,admin'); \ No newline at end of file