* [refac] Refactor test lib classes.
This commit is contained in:
@@ -35,9 +35,7 @@ class apiModelTest extends baseTest
|
||||
$this->instance->deleteRelease($id);
|
||||
|
||||
$objects = $this->instance->getRelease($libID);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
@@ -52,7 +50,6 @@ class apiModelTest extends baseTest
|
||||
{
|
||||
$result = $this->instance->getApiStatusText($status);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -66,14 +63,11 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function createTest($params, $confirm = true)
|
||||
{
|
||||
global $tester;
|
||||
|
||||
$_POST = $params;
|
||||
$_POST = $params;
|
||||
$objects = $this->instance->create($params['lib']);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
if($confirm) $tester->dao->delete()->from(TABLE_API)->where('id')->eq($objects->id)->exec();
|
||||
if($confirm) $this->instance->dao->delete()->from(TABLE_API)->where('id')->eq($objects->id)->exec();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
@@ -89,7 +83,6 @@ class apiModelTest extends baseTest
|
||||
{
|
||||
$result = $this->instance->createStruct($data);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -104,7 +97,6 @@ class apiModelTest extends baseTest
|
||||
{
|
||||
$result = $this->instance->updateStruct($formData);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -119,14 +111,11 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function updateTest($apiID, $params, $confirm = true)
|
||||
{
|
||||
global $tester;
|
||||
$_POST = $params;
|
||||
|
||||
$_POST = $params;
|
||||
$objects = $this->instance->update($apiID);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
if($confirm) $tester->dao->delete()->from(TABLE_API)->where('id')->eq($apiID)->exec();
|
||||
if($confirm) $this->instance->dao->delete()->from(TABLE_API)->where('id')->eq($apiID)->exec();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
@@ -141,13 +130,10 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function getStructListByLibIDTest($id, $confirm = true)
|
||||
{
|
||||
global $tester;
|
||||
|
||||
$objects = $this->instance->getStructListByLibID($id);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
if($confirm) $tester->dao->delete()->from(TABLE_APISTRUCT)->where('id')->eq($objects['0']->id)->exec();
|
||||
if($confirm) $this->instance->dao->delete()->from(TABLE_APISTRUCT)->where('id')->eq($objects['0']->id)->exec();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
@@ -162,13 +148,10 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function getStructByIDTest($id, $confirm = true)
|
||||
{
|
||||
global $tester;
|
||||
|
||||
$objects = $this->instance->getStructByID($id);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
if($confirm) $tester->dao->delete()->from(TABLE_APISTRUCT)->where('id')->eq($objects->id)->exec();
|
||||
if($confirm) $this->instance->dao->delete()->from(TABLE_APISTRUCT)->where('id')->eq($objects->id)->exec();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
@@ -186,7 +169,6 @@ class apiModelTest extends baseTest
|
||||
public function getReleaseTest($libID = 0, $type = '', $param = 0, $confirm = true)
|
||||
{
|
||||
$objects = $this->instance->getRelease($libID = 0, $type = '', $param = 0);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
if($confirm) $this->instance->deleteRelease($objects->id);
|
||||
@@ -206,7 +188,6 @@ class apiModelTest extends baseTest
|
||||
public function getReleaseListByApiTest($libID, $id = 0, $confirm = true)
|
||||
{
|
||||
$objects = $this->instance->getReleaseListByApi($libID);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
if($confirm) $this->instance->deleteRelease($objects[$id]->id);
|
||||
@@ -226,9 +207,7 @@ class apiModelTest extends baseTest
|
||||
public function getLibByIdTest($id, $version = 0, $release = 0)
|
||||
{
|
||||
$objects = $this->instance->getLibById($id, $version = 0, $release = 0);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
@@ -243,13 +222,10 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function getApiListByReleaseTest($release, $where = '1 = 1 ')
|
||||
{
|
||||
global $tester;
|
||||
|
||||
$objects = $this->instance->getApiListByRelease($release, $where = '1 = 1 ');
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
foreach($release->snap['apis'] as $api) $tester->dao->delete()->from(TABLE_API)->where('id')->eq($api['id'])->exec();
|
||||
foreach($release->snap['apis'] as $api) $this->instance->dao->delete()->from(TABLE_API)->where('id')->eq($api['id'])->exec();
|
||||
$this->instance->deleteRelease($release->id);
|
||||
|
||||
return $objects;
|
||||
@@ -267,9 +243,7 @@ class apiModelTest extends baseTest
|
||||
public function getListByModuleIdTest($libID = 0, $moduleID = 0, $release = 0)
|
||||
{
|
||||
$objects = $this->instance->getListByModuleId($libID, $moduleID, $release);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return current($objects);
|
||||
}
|
||||
|
||||
@@ -285,9 +259,7 @@ class apiModelTest extends baseTest
|
||||
public function getStructListByReleaseTest($release, $where = '1 = 1 ', $orderBy = 'id')
|
||||
{
|
||||
$objects = $this->instance->getStructListByRelease($release, $where = '1 = 1 ', $orderBy = 'id');
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $objects;
|
||||
}
|
||||
|
||||
@@ -302,19 +274,11 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function createDemoLibTest($name, $baseUrl, $currentAccount)
|
||||
{
|
||||
global $tester;
|
||||
|
||||
$reflection = new ReflectionClass($this->instance);
|
||||
$method = $reflection->getMethod('createDemoLib');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$libID = $method->invoke($this->instance, $name, $baseUrl, $currentAccount);
|
||||
|
||||
$libID = $this->invokeArgs('createDemoLib', [$name, $baseUrl, $currentAccount]);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
$lib = $tester->dao->select('*')->from(TABLE_DOCLIB)->where('id')->eq($libID)->fetch();
|
||||
|
||||
$tester->dao->delete()->from(TABLE_DOCLIB)->where('id')->eq($libID)->exec();
|
||||
$lib = $this->instance->dao->select('*')->from(TABLE_DOCLIB)->where('id')->eq($libID)->fetch();
|
||||
$this->instance->dao->delete()->from(TABLE_DOCLIB)->where('id')->eq($libID)->exec();
|
||||
|
||||
return $lib;
|
||||
}
|
||||
@@ -330,16 +294,8 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function createDemoStructTest($libID, $version, $currentAccount)
|
||||
{
|
||||
global $tester;
|
||||
|
||||
$reflection = new ReflectionClass($this->instance);
|
||||
$method = $reflection->getMethod('createDemoStruct');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$result = $method->invoke($this->instance, $libID, $version, $currentAccount);
|
||||
|
||||
$result = $this->invokeArgs('createDemoStruct', [$libID, $version, $currentAccount]);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -353,16 +309,8 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function createDemoStructSpecTest($version, $currentAccount)
|
||||
{
|
||||
global $tester;
|
||||
|
||||
$reflection = new ReflectionClass($this->instance);
|
||||
$method = $reflection->getMethod('createDemoStructSpec');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$result = $method->invoke($this->instance, $version, $currentAccount);
|
||||
|
||||
$result = $this->invokeArgs('createDemoStructSpec', [$version, $currentAccount]);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -376,16 +324,8 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function createDemoModuleTest($libID, $version)
|
||||
{
|
||||
global $tester;
|
||||
|
||||
$reflection = new ReflectionClass($this->instance);
|
||||
$method = $reflection->getMethod('createDemoModule');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$result = $method->invoke($this->instance, $libID, $version);
|
||||
|
||||
$result = $this->invokeArgs('createDemoModule', [$libID, $version]);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -401,16 +341,8 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function createDemoApiTest($libID, $version, $moduleMap, $currentAccount)
|
||||
{
|
||||
global $tester;
|
||||
|
||||
$reflection = new ReflectionClass($this->instance);
|
||||
$method = $reflection->getMethod('createDemoApi');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$result = $method->invoke($this->instance, $libID, $version, $moduleMap, $currentAccount);
|
||||
|
||||
$result = $this->invokeArgs('createDemoApi', [$libID, $version, $moduleMap, $currentAccount]);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -426,34 +358,13 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function createDemoApiSpecTest($version, $apiMap, $moduleMap, $currentAccount)
|
||||
{
|
||||
global $tester;
|
||||
// 先检查版本文件是否存在,避免后续的file_get_contents错误
|
||||
$demoDataFile = $this->instance->app->getAppRoot() . 'db' . DS . 'api' . DS . $version . DS . 'apispec';
|
||||
if(!file_exists($demoDataFile)) return 0;
|
||||
|
||||
try
|
||||
{
|
||||
// 先检查版本文件是否存在,避免后续的file_get_contents错误
|
||||
$demoDataFile = $this->instance->app->getAppRoot() . 'db' . DS . 'api' . DS . $version . DS . 'apispec';
|
||||
if (!file_exists($demoDataFile)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$reflection = new ReflectionClass($this->instance);
|
||||
$method = $reflection->getMethod('createDemoApiSpec');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$result = $method->invoke($this->instance, $version, $apiMap, $moduleMap, $currentAccount);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result ? 1 : 0;
|
||||
}
|
||||
catch(Exception $e)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
catch(TypeError $e)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
$result = $this->invokeArgs('createDemoApiSpec', [$version, $apiMap, $moduleMap, $currentAccount]);
|
||||
if(dao::isError()) return dao::getError();
|
||||
return $result ? 1 : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -465,9 +376,7 @@ class apiModelTest extends baseTest
|
||||
public function getGroupedObjectsTest()
|
||||
{
|
||||
$result = $this->instance->getGroupedObjects();
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -484,23 +393,15 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function buildSearchFormTest($lib, $queryID, $actionURL, $libs = array(), $type = '')
|
||||
{
|
||||
global $tester;
|
||||
|
||||
// 备份原始配置
|
||||
$originalConfig = isset($tester->config->api->search) ? $tester->config->api->search : null;
|
||||
$originalConfig = isset($this->instance->config->api->search) ? $this->instance->config->api->search : null;
|
||||
|
||||
// 执行方法
|
||||
$this->instance->buildSearchForm($lib, $queryID, $actionURL, $libs, $type);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
// 返回设置后的搜索配置
|
||||
$result = array(
|
||||
'module' => isset($tester->config->api->search['module']) ? $tester->config->api->search['module'] : '',
|
||||
'queryID' => isset($tester->config->api->search['queryID']) ? $tester->config->api->search['queryID'] : '',
|
||||
'actionURL' => isset($tester->config->api->search['actionURL']) ? $tester->config->api->search['actionURL'] : '',
|
||||
'libValues' => isset($tester->config->api->search['params']['lib']['values']) ? $tester->config->api->search['params']['lib']['values'] : array()
|
||||
);
|
||||
$result = $this->instance->config->api->search;
|
||||
|
||||
// 恢复原始配置
|
||||
if($originalConfig !== null) $tester->config->api->search = $originalConfig;
|
||||
@@ -517,14 +418,8 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function getApiSpecByDataTest($data)
|
||||
{
|
||||
$reflection = new ReflectionClass($this->instance);
|
||||
$method = $reflection->getMethod('getApiSpecByData');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$result = $method->invoke($this->instance, $data);
|
||||
|
||||
$result = $this->invokeArgs('getApiSpecByData', [$data]);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -537,14 +432,8 @@ class apiModelTest extends baseTest
|
||||
*/
|
||||
public function getApiStructSpecByDataTest($data)
|
||||
{
|
||||
$reflection = new ReflectionClass($this->instance);
|
||||
$method = $reflection->getMethod('getApiStructSpecByData');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$result = $method->invoke($this->instance, $data);
|
||||
|
||||
$result = $this->invokeArgs('getApiStructSpecByData', [$data]);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -558,282 +447,10 @@ class apiModelTest extends baseTest
|
||||
public function getTypeListTest($libID)
|
||||
{
|
||||
$result = $this->instance->getTypeList($libID);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test generateLibsDropMenu method.
|
||||
*
|
||||
* @param object $lib
|
||||
* @param int $version
|
||||
* @access public
|
||||
* @return array|string
|
||||
*/
|
||||
public function generateLibsDropMenuTest($lib, $version = 0)
|
||||
{
|
||||
global $tester;
|
||||
|
||||
// 加载api控制器类、模型类和apiZen类
|
||||
require_once dirname(__FILE__, 3) . '/control.php';
|
||||
require_once dirname(__FILE__, 3) . '/model.php';
|
||||
require_once dirname(__FILE__, 3) . '/zen.php';
|
||||
|
||||
// 创建apiZen实例
|
||||
$apiZen = new apiZen();
|
||||
|
||||
// 为apiZen对象注入必要的依赖
|
||||
$apiZen->config = $tester->config;
|
||||
$apiZen->session = $tester->session;
|
||||
$apiZen->app = $tester->app;
|
||||
$apiZen->lang = $tester->lang;
|
||||
|
||||
// 使用反射调用protected方法
|
||||
$reflection = new ReflectionClass($apiZen);
|
||||
$method = $reflection->getMethod('generateLibsDropMenu');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$result = $method->invoke($apiZen, $lib, $version);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test parseDocSpaceParam method.
|
||||
*
|
||||
* @param array $libs
|
||||
* @param int $libID
|
||||
* @param string $type
|
||||
* @param int $objectID
|
||||
* @param int $moduleID
|
||||
* @param string $spaceType
|
||||
* @param int $release
|
||||
* @param string $cookieData
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function parseDocSpaceParamTest(array $libs, int $libID, string $type, int $objectID, int $moduleID, string $spaceType, int $release, string $cookieData = '')
|
||||
{
|
||||
global $tester;
|
||||
|
||||
// 加载api控制器类、模型类和apiZen类
|
||||
require_once dirname(__FILE__, 3) . '/control.php';
|
||||
require_once dirname(__FILE__, 3) . '/model.php';
|
||||
require_once dirname(__FILE__, 3) . '/zen.php';
|
||||
|
||||
// 创建apiZen实例并模拟cookie属性
|
||||
$apiZen = new apiZen();
|
||||
|
||||
// 为apiZen对象注入必要的依赖
|
||||
$apiZen->config = $tester->config;
|
||||
$apiZen->session = $tester->session;
|
||||
$apiZen->app = $tester->app;
|
||||
$apiZen->lang = $tester->lang;
|
||||
|
||||
// 创建cookie对象
|
||||
$apiZen->cookie = new stdClass();
|
||||
if(!empty($cookieData))
|
||||
{
|
||||
$apiZen->cookie->docSpaceParam = $cookieData;
|
||||
}
|
||||
|
||||
// 创建view对象
|
||||
$apiZen->view = new stdClass();
|
||||
|
||||
// 模拟doc模块以避免复杂的依赖关系
|
||||
$apiZen->doc = new stdClass();
|
||||
$apiZen->doc->setMenuByType = function($type, $objectID, $libID) use ($libs) {
|
||||
$object = null;
|
||||
$objectDropdown = array();
|
||||
return array($libs, $libID, $object, $objectID, $objectDropdown);
|
||||
};
|
||||
$apiZen->doc->getLibTree = function($libID, $libs, $type, $moduleID = 0, $objectID = 0, $browseType = '', $param = '') {
|
||||
return array('tree' => 'mock_tree_data');
|
||||
};
|
||||
|
||||
// 模拟generateLibsDropMenu方法
|
||||
$reflection = new ReflectionClass($apiZen);
|
||||
$generateMethod = $reflection->getMethod('generateLibsDropMenu');
|
||||
$generateMethod->setAccessible(true);
|
||||
|
||||
// 使用反射调用protected方法parseDocSpaceParam
|
||||
$method = $reflection->getMethod('parseDocSpaceParam');
|
||||
$method->setAccessible(true);
|
||||
|
||||
// 简单的测试:仅检查方法是否能正常设置view属性
|
||||
try {
|
||||
// 先模拟简单场景避免复杂依赖
|
||||
if(!empty($cookieData)) {
|
||||
$docParam = json_decode($cookieData);
|
||||
if(isset($docParam) && !(in_array($docParam->type, array('product', 'project')) && $docParam->objectID == 0)) {
|
||||
// 直接设置结果,模拟方法行为
|
||||
$apiZen->view->type = $docParam->type;
|
||||
$apiZen->view->objectType = $docParam->type;
|
||||
$apiZen->view->objectID = $docParam->objectID;
|
||||
$apiZen->view->libID = $docParam->libID;
|
||||
$apiZen->view->moduleID = $docParam->moduleID;
|
||||
$apiZen->view->spaceType = $docParam->type;
|
||||
$apiZen->view->libTree = array('mock' => true);
|
||||
$apiZen->view->objectDropdown = array('mock' => true);
|
||||
} else {
|
||||
// 默认情况
|
||||
$apiZen->view->type = $type;
|
||||
$apiZen->view->objectType = $type;
|
||||
$apiZen->view->objectID = $objectID;
|
||||
$apiZen->view->libID = $libID;
|
||||
$apiZen->view->moduleID = $moduleID;
|
||||
$apiZen->view->spaceType = $spaceType;
|
||||
$apiZen->view->libTree = array('mock' => true);
|
||||
$apiZen->view->objectDropdown = array('mock' => true);
|
||||
}
|
||||
} else {
|
||||
// 默认情况
|
||||
$apiZen->view->type = $type;
|
||||
$apiZen->view->objectType = $type;
|
||||
$apiZen->view->objectID = $objectID;
|
||||
$apiZen->view->libID = $libID;
|
||||
$apiZen->view->moduleID = $moduleID;
|
||||
$apiZen->view->spaceType = $spaceType;
|
||||
$apiZen->view->libTree = array('mock' => true);
|
||||
$apiZen->view->objectDropdown = array('mock' => true);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
return array('error' => $e->getMessage());
|
||||
}
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
// 返回view中设置的属性
|
||||
return array(
|
||||
'type' => isset($apiZen->view->type) ? $apiZen->view->type : '',
|
||||
'objectType' => isset($apiZen->view->objectType) ? $apiZen->view->objectType : '',
|
||||
'objectID' => isset($apiZen->view->objectID) ? $apiZen->view->objectID : 0,
|
||||
'libID' => isset($apiZen->view->libID) ? $apiZen->view->libID : 0,
|
||||
'moduleID' => isset($apiZen->view->moduleID) ? $apiZen->view->moduleID : 0,
|
||||
'spaceType' => isset($apiZen->view->spaceType) ? $apiZen->view->spaceType : '',
|
||||
'libTree' => isset($apiZen->view->libTree) && !empty($apiZen->view->libTree),
|
||||
'objectDropdown' => isset($apiZen->view->objectDropdown) && !empty($apiZen->view->objectDropdown)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getMethod method.
|
||||
*
|
||||
* @param string $filePath
|
||||
* @param string $ext
|
||||
* @access public
|
||||
* @return object|array
|
||||
*/
|
||||
public function getMethodTest(string $filePath, string $ext = '')
|
||||
{
|
||||
global $tester;
|
||||
|
||||
// 加载api控制器类、模型类和apiZen类
|
||||
require_once dirname(__FILE__, 3) . '/control.php';
|
||||
require_once dirname(__FILE__, 3) . '/model.php';
|
||||
require_once dirname(__FILE__, 3) . '/zen.php';
|
||||
|
||||
// 创建apiZen实例
|
||||
$apiZen = new apiZen();
|
||||
|
||||
// 为apiZen对象注入必要的依赖
|
||||
$apiZen->config = $tester->config;
|
||||
$apiZen->session = $tester->session;
|
||||
$apiZen->app = $tester->app;
|
||||
$apiZen->lang = $tester->lang;
|
||||
|
||||
// 使用反射调用protected方法
|
||||
$reflection = new ReflectionClass($apiZen);
|
||||
$method = $reflection->getMethod('getMethod');
|
||||
$method->setAccessible(true);
|
||||
|
||||
try {
|
||||
$result = $method->invoke($apiZen, $filePath, $ext);
|
||||
if(dao::isError()) return dao::getError();
|
||||
return $result;
|
||||
} catch (Exception $e) {
|
||||
return array('error' => $e->getMessage());
|
||||
} catch (ReflectionException $e) {
|
||||
return array('error' => 'ReflectionException: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test request method.
|
||||
*
|
||||
* @param string $moduleName
|
||||
* @param string $methodName
|
||||
* @param string $action
|
||||
* @param array $postData
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function requestTest(string $moduleName, string $methodName, string $action, array $postData = array())
|
||||
{
|
||||
global $tester;
|
||||
|
||||
// 加载api控制器类、模型类和apiZen类
|
||||
require_once dirname(__FILE__, 3) . '/control.php';
|
||||
require_once dirname(__FILE__, 3) . '/model.php';
|
||||
require_once dirname(__FILE__, 3) . '/zen.php';
|
||||
|
||||
// 创建apiZen实例
|
||||
$apiZen = new apiZen();
|
||||
|
||||
// 为apiZen对象注入必要的依赖
|
||||
$apiZen->config = $tester->config;
|
||||
$apiZen->session = $tester->session;
|
||||
$apiZen->app = $tester->app;
|
||||
$apiZen->lang = $tester->lang;
|
||||
|
||||
// 备份原始 $_POST 数据
|
||||
$originalPost = $_POST;
|
||||
|
||||
// 设置测试用的 $_POST 数据
|
||||
$_POST = $postData;
|
||||
|
||||
// 模拟 URL 构建过程,不实际调用 file_get_contents
|
||||
$host = 'http://localhost'; // 模拟系统URL
|
||||
$param = '';
|
||||
|
||||
if($action == 'extendModel')
|
||||
{
|
||||
if(!isset($_POST['noparam']))
|
||||
{
|
||||
foreach($_POST as $key => $value) $param .= ',' . $key . '=' . $value;
|
||||
$param = ltrim($param, ',');
|
||||
}
|
||||
$url = $host . "/api-getModel-moduleName=$moduleName&methodName=$methodName¶ms=$param.json";
|
||||
$url .= strpos($url, '?') === false ? '?' : '&';
|
||||
$url .= 'zentaosid=test_session_id';
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!isset($_POST['noparam']))
|
||||
{
|
||||
foreach($_POST as $key => $value) $param .= '&' . $key . '=' . $value;
|
||||
$param = ltrim($param, '&');
|
||||
}
|
||||
$url = $host . "/$moduleName-$methodName" . ($param ? "-$param" : '') . ".json";
|
||||
$url .= strpos($url, '?') === false ? '?' : '&';
|
||||
$url .= 'zentaosid=test_session_id';
|
||||
}
|
||||
|
||||
// 模拟响应内容,不实际进行HTTP请求
|
||||
$content = 'mock_response_content';
|
||||
|
||||
// 恢复原始 $_POST 数据
|
||||
$_POST = $originalPost;
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return array('url' => $url, 'content' => $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getPrivApis method.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user