+ [misc] Add unit tests for metricModel::createSqlFunction() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-15 15:06:18 +08:00
co-authored by Claude
parent ae888b3db8
commit 99f4c3c8d2
2 changed files with 72 additions and 0 deletions
@@ -763,4 +763,24 @@ class metricTest
return $hasRequirement;
}
/**
* Test createSqlFunction method.
*
* @param string $sql
* @param object $measurement
* @access public
* @return mixed
*/
public function createSqlFunctionTest($sql = '', $measurement = null)
{
// 清除错误缓冲区以捕获可能的警告信息
ob_start();
$result = $this->objectModel->createSqlFunction($sql, $measurement);
ob_end_clean();
if(dao::isError()) return dao::getError();
return $result;
}
}
+52
View File
@@ -0,0 +1,52 @@
#!/usr/bin/env php
<?php
/**
title=测试 metricModel::createSqlFunction();
timeout=0
cid=0
- 执行metricTest模块的createSqlFunctionTest方法,参数是$validSql, $validMeasurement 属性result @success
- 执行metricTest模块的createSqlFunctionTest方法,参数是$validSql, $nullMeasurement 属性result @fail
- 执行metricTest模块的createSqlFunctionTest方法,参数是$invalidSql, $validMeasurement 属性result @fail
- 执行metricTest模块的createSqlFunctionTest方法,参数是$emptySql, $validMeasurement 属性result @fail
- 执行metricTest模块的createSqlFunctionTest方法,参数是$errorSql, $validMeasurement 属性result @fail
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/metric.unittest.class.php';
su('admin');
$metricTest = new metricTest();
// 创建有效的measurement对象
$validMeasurement = new stdClass();
$validMeasurement->code = 'test_metric';
// 创建有效的SQL语句(使用简单的函数定义)
$validSql = "CREATE FUNCTION qc_test_metric() RETURNS INT DETERMINISTIC RETURN 1;";
// 创建null measurement对象
$nullMeasurement = null;
// 创建无效的measurement对象(code为空)
$emptyCodeMeasurement = new stdClass();
$emptyCodeMeasurement->code = '';
// 创建无效的SQL语句(不是CREATE FUNCTION语句)
$invalidSql = "SELECT * FROM table;";
// 创建空SQL
$emptySql = "";
// 创建带语法错误的SQL(用于测试异常处理)
$errorSql = "CREATE FUNCTION qc_test_error() RETURNS INT DETERMINISTIC INVALID_SYNTAX;";
r($metricTest->createSqlFunctionTest($validSql, $validMeasurement)) && p('result') && e('success');
r($metricTest->createSqlFunctionTest($validSql, $nullMeasurement)) && p('result') && e('fail');
r($metricTest->createSqlFunctionTest($invalidSql, $validMeasurement)) && p('result') && e('fail');
r($metricTest->createSqlFunctionTest($emptySql, $validMeasurement)) && p('result') && e('fail');
r($metricTest->createSqlFunctionTest($errorSql, $validMeasurement)) && p('result') && e('fail');