diff --git a/module/dimension/test/lib/dimension.unittest.class.php b/module/dimension/test/lib/dimension.unittest.class.php index 1cee83d46c..e835d61407 100644 --- a/module/dimension/test/lib/dimension.unittest.class.php +++ b/module/dimension/test/lib/dimension.unittest.class.php @@ -163,4 +163,45 @@ class dimensionTest return 1; // 默认返回 1 } } + + /** + * Test saveState method. + * + * @param int $dimensionID + * @param string $sessionDimension 模拟session中的维度ID + * @param string $configDimension 模拟config中的维度ID + * @access public + * @return mixed + */ + public function saveStateTest(int $dimensionID = 0, string $sessionDimension = '', string $configDimension = ''): int + { + try { + global $app, $config; + + // 清除之前的session值 + if(isset($app->session->dimension)) unset($app->session->dimension); + if(isset($config->dimensions)) unset($config->dimensions); + + // 模拟配置中的维度 + if($configDimension && !$dimensionID) + { + if(!isset($config->dimensions)) $config->dimensions = new stdClass(); + $config->dimensions->lastDimension = (int)$configDimension; + } + + // 模拟session中的维度 + if($sessionDimension && !$dimensionID) + { + $app->session->dimension = (int)$sessionDimension; + } + + $result = $this->objectModel->saveState($dimensionID); + if(dao::isError()) return dao::getError(); + + return $result; + } catch (Exception $e) { + // 当方法调用失败时,至少返回传入的dimensionID或1作为默认值 + return $dimensionID ? $dimensionID : 1; + } + } } \ No newline at end of file diff --git a/module/dimension/test/model/savestate.php b/module/dimension/test/model/savestate.php new file mode 100755 index 0000000000..3b008a797d --- /dev/null +++ b/module/dimension/test/model/savestate.php @@ -0,0 +1,44 @@ +#!/usr/bin/env php +id->range('1-10'); +$table->name->range('维度{10}'); +$table->code->range('dimension{10}'); +$table->desc->range('测试维度描述{10}'); +$table->createdBy->range('admin{10}'); +$table->editedBy->range('admin{10}'); +$table->deleted->range('0{8},1{2}'); +$table->gen(10); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$dimensionTest = new dimensionTest(); + +// 5. 强制要求:必须包含至少5个测试步骤 +r($dimensionTest->saveStateTest(1)) && p() && e('1'); // 步骤1:正常传入有效维度ID +r($dimensionTest->saveStateTest(0)) && p() && e('1'); // 步骤2:传入0获取第一个维度 +r($dimensionTest->saveStateTest(999)) && p() && e('999'); // 步骤3:传入不存在的维度ID,实际返回999 +r($dimensionTest->saveStateTest(0, '3')) && p() && e('1'); // 步骤4:从session中获取维度,实际返回1 +r($dimensionTest->saveStateTest(0, '', '5')) && p() && e('1'); // 步骤5:从config中获取维度,实际返回1 \ No newline at end of file