diff --git a/module/story/test/lib/storyzen.unittest.class.php b/module/story/test/lib/storyzen.unittest.class.php index 2cc0647206..def7a8bbbf 100755 --- a/module/story/test/lib/storyzen.unittest.class.php +++ b/module/story/test/lib/storyzen.unittest.class.php @@ -806,4 +806,39 @@ class storyZenTest if(dao::isError()) return dao::getError(); return $result; } + + /** + * Test buildStoryForSubmitReview method. + * + * @param int $storyID 故事ID + * @param array $postData POST数据模拟 + * @access public + * @return mixed + */ + public function buildStoryForSubmitReviewTest(int $storyID, array $postData = array()) + { + // 模拟POST数据 + if(!empty($postData)) + { + foreach($postData as $key => $value) + { + $_POST[$key] = $value; + } + } + + $method = $this->storyZenTest->getMethod('buildStoryForSubmitReview'); + $method->setAccessible(true); + + $result = $method->invokeArgs($this->storyZenTest->newInstance(), [$storyID]); + + // 清理POST数据 + foreach($postData as $key => $value) + { + unset($_POST[$key]); + } + + // 如果返回false,返回错误信息 + if($result === false && dao::isError()) return dao::getError(); + return $result; + } } diff --git a/module/story/test/zen/buildstoryforsubmitreview.php b/module/story/test/zen/buildstoryforsubmitreview.php new file mode 100755 index 0000000000..7308306453 --- /dev/null +++ b/module/story/test/zen/buildstoryforsubmitreview.php @@ -0,0 +1,45 @@ +#!/usr/bin/env php +id->range('1-10'); +$table->product->range('1'); +$table->title->range('需求标题{1-10}'); +$table->status->range('active'); +$table->stage->range('wait'); +$table->type->range('story'); +$table->version->range('1'); +$table->openedBy->range('admin'); +$table->gen(10); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$storyZenTest = new storyZenTest(); + +// 5. 强制要求:必须包含至少5个测试步骤 +r($storyZenTest->buildStoryForSubmitReviewTest(1, array('needNotReview' => '1', 'reviewer' => array()))) && p('status') && e('active'); // 步骤1:不需要评审的正常情况 +r($storyZenTest->buildStoryForSubmitReviewTest(1, array('needNotReview' => '0', 'reviewer' => array('user1', 'user2')))) && p('status') && e('active'); // 步骤2:有评审者的正常情况 +r($storyZenTest->buildStoryForSubmitReviewTest(1, array('needNotReview' => '0', 'reviewer' => array()))) && p('reviewer') && e('『评审人员』不能为空。'); // 步骤3:缺少评审者的错误情况 +r($storyZenTest->buildStoryForSubmitReviewTest(1, array('needNotReview' => '0', 'reviewer' => array('user1', '', 'user2', null)))) && p('status') && e('active'); // 步骤4:评审者数组包含空值 +r($storyZenTest->buildStoryForSubmitReviewTest(999, array('needNotReview' => '1', 'reviewer' => array()))) && p('status') && e('active'); // 步骤5:无效故事ID的边界测试 \ No newline at end of file