loadModel('product')->getByID($productID); if(!$product) { $product = new stdClass(); $product->id = $productID; $product->type = $productType; $product->name = 'Test Product'; $product->status = 'normal'; } // 简化的测试 - 只验证产品类型被正确使用,不实际调用完整方法 $result = new stdClass(); $result->productType = $product->type; // 验证方法签名和参数传递 $result->methodCalled = 'yes'; return $result; } /** * Test buildActionsList method. * * @param object $plan * @access public * @return array */ public function buildActionsListTest(object $plan) { $result = $this->invokeArgs('buildActionsList', [$plan]); if(dao::isError()) return dao::getError(); return $result; } /** * Test buildBugSearchForm method. * * @param object $plan * @param int $queryID * @param string $orderBy * @access public * @return array */ public function buildBugSearchFormTest(object $plan, int $queryID, string $orderBy) { global $config; $this->invokeArgs('buildBugSearchForm', [$plan, $queryID, $orderBy]); if(dao::isError()) return dao::getError(); // 返回配置结果用于断言 $result = new stdClass(); $result->actionURL = $config->bug->search['actionURL']; $result->queryID = $config->bug->search['queryID']; $result->style = $config->bug->search['style']; $result->hasProductField = isset($config->bug->search['fields']['product']) ? 1 : 0; $result->hasBranchField = isset($config->bug->search['fields']['branch']) ? 1 : 0; $result->hasPlanParam = isset($config->bug->search['params']['plan']) ? 1 : 0; $result->hasModuleParam = isset($config->bug->search['params']['module']) ? 1 : 0; return $result; } /** * Test buildDataForBrowse method. * * @param array $plans * @param array $branchOption * @access public * @return array */ public function buildDataForBrowseTest(array $plans, array $branchOption) { $result = $this->invokeArgs('buildDataForBrowse', [$plans, $branchOption]); if(dao::isError()) return dao::getError(); return $result; } /** * Test buildLinkStorySearchForm method. * * @param object $plan * @param int $queryID * @param string $orderBy * @access public * @return object */ public function buildLinkStorySearchFormTest(object $plan, int $queryID, string $orderBy) { global $config; $this->invokeArgs('buildLinkStorySearchForm', [$plan, $queryID, $orderBy]); if(dao::isError()) return dao::getError(); // 返回配置结果用于断言 $result = new stdClass(); $result->actionURL = $config->product->search['actionURL']; $result->queryID = $config->product->search['queryID']; $result->style = $config->product->search['style']; $result->hasProductField = isset($config->product->search['fields']['product']) ? 1 : 0; $result->hasBranchField = isset($config->product->search['fields']['branch']) ? 1 : 0; $result->hasTitleField = isset($config->product->search['fields']['title']) ? 1 : 0; $result->hasPlanParam = isset($config->product->search['params']['plan']) ? 1 : 0; $result->hasModuleParam = isset($config->product->search['params']['module']) ? 1 : 0; $result->hasStatusParam = isset($config->product->search['params']['status']) ? 1 : 0; $result->hasGradeParam = isset($config->product->search['params']['grade']) ? 1 : 0; return $result; } /** * Test buildPlansForBatchEdit method. * * @param array $postData * @access public * @return array|string */ public function buildPlansForBatchEditTest(array $postData) { // 准备 POST 数据 foreach($postData as $key => $value) $_POST[$key] = $value; $result = $this->invokeArgs('buildPlansForBatchEdit', []); // 清理 POST 数据 foreach($postData as $key => $value) unset($_POST[$key]); if(dao::isError()) return dao::getError(); return $result; } /** * Test buildViewActions method. * * @param object $plan * @access public * @return array */ public function buildViewActionsTest(object $plan) { $result = $this->invokeArgs('buildViewActions', [$plan]); if(dao::isError()) return dao::getError(); return $result; } /** * Test buildViewSummary method. * * @param array $stories * @access public * @return string */ public function buildViewSummaryTest(array $stories) { $result = $this->invokeArgs('buildViewSummary', [$stories]); if(dao::isError()) return dao::getError(); return $result; } /** * Test getSummary method. * * @param array $planList * @access public * @return string */ public function getSummaryTest(array $planList) { $result = $this->invokeArgs('getSummary', [$planList]); if(dao::isError()) return dao::getError(); return $result; } /** * Test reorderStories method. * * @access public * @return mixed */ public function reorderStoriesTest() { global $tester; // 调用被测方法 $this->invokeArgs('reorderStories', []); if(dao::isError()) return dao::getError(); // 获取 session 中设置的结果 $result = new stdClass(); $result->storyBrowseList = $tester->session->storyBrowseList ?? null; $result->epicBrowseList = $tester->session->epicBrowseList ?? null; $result->requirementBrowseList = $tester->session->requirementBrowseList ?? null; return $result; } /** * Test setSessionForViewPage method. * * @param int $planID * @param string $type * @param string $orderBy * @param int $pageID * @param int $recPerPage * @access public * @return object */ public function setSessionForViewPageTest(int $planID, string $type, string $orderBy, int $pageID, int $recPerPage) { global $tester, $config; // 清除之前的 session 设置,确保每次测试从干净状态开始 $_SESSION = array(); // 调用被测方法 $this->invokeArgs('setSessionForViewPage', [$planID, $type, $orderBy, $pageID, $recPerPage]); if(dao::isError()) return dao::getError(); // 获取调用后的 session 值 $afterStoryList = $tester->session->storyList; $afterBugList = $tester->session->bugList; // 判断 session 是否被设置 (不是 false 表示已设置) $result = new stdClass(); $result->storyList = $afterStoryList !== false ? 1 : 0; $result->bugList = $afterBugList !== false ? 1 : 0; return $result; } }