+ [misc] Add unit tests for metricTao::executeDelete() method
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1484,4 +1484,40 @@ class metricTest
|
||||
|
||||
return $afterUndeleted - $beforeUndeleted;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test executeDelete method.
|
||||
*
|
||||
* @param string $code
|
||||
* @access public
|
||||
* @return mixed
|
||||
*/
|
||||
public function executeDeleteTest($code = '')
|
||||
{
|
||||
global $tester;
|
||||
|
||||
if(empty($code)) return 'invalid_code';
|
||||
|
||||
// 记录删除前的记录数
|
||||
$beforeCount = $tester->dao->select('COUNT(*) as count')
|
||||
->from(TABLE_METRICLIB)
|
||||
->where('metricCode')->eq($code)
|
||||
->fetch('count');
|
||||
|
||||
// 使用反射来调用protected方法
|
||||
$reflection = new ReflectionClass($this->objectTao);
|
||||
$method = $reflection->getMethod('executeDelete');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$method->invoke($this->objectTao, $code);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
// 记录删除后的记录数
|
||||
$afterCount = $tester->dao->select('COUNT(*) as count')
|
||||
->from(TABLE_METRICLIB)
|
||||
->where('metricCode')->eq($code)
|
||||
->fetch('count');
|
||||
|
||||
return $beforeCount - $afterCount;
|
||||
}
|
||||
}
|
||||
Executable
+75
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
title=测试 metricTao::executeDelete();
|
||||
timeout=0
|
||||
cid=0
|
||||
|
||||
- 步骤1:删除test_code_1的记录(5个deleted=1) @5
|
||||
- 步骤2:删除test_code_2的记录(2个value=0) @2
|
||||
- 步骤3:删除test_code_3的记录(5个deleted=1) @5
|
||||
- 步骤4:删除test_code_4的记录(无符合条件记录) @0
|
||||
- 步骤5:测试空的度量编码参数 @invalid_code
|
||||
|
||||
*/
|
||||
|
||||
// 1. 导入依赖(路径固定,不可修改)
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/metric.unittest.class.php';
|
||||
|
||||
// 2. zendata数据准备(根据需要配置)
|
||||
global $tester;
|
||||
$tester->dao->delete()->from(TABLE_METRICLIB)->exec();
|
||||
|
||||
// 手动插入测试数据
|
||||
$records = array(
|
||||
array('metricCode' => 'test_code_1', 'value' => '0', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_1', 'value' => '0', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_1', 'value' => '0', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_1', 'value' => '100', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_1', 'value' => '100', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_2', 'value' => '0', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_2', 'value' => '0', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_2', 'value' => '200', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_2', 'value' => '200', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_2', 'value' => '200', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_3', 'value' => '0', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_3', 'value' => '0', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_3', 'value' => '0', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_3', 'value' => '0', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_3', 'value' => '0', 'deleted' => '1'),
|
||||
array('metricCode' => 'test_code_4', 'value' => '300', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_4', 'value' => '300', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_4', 'value' => '300', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_4', 'value' => '300', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_4', 'value' => '300', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_5', 'value' => '0', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_5', 'value' => '0', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_5', 'value' => '0', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_5', 'value' => '0', 'deleted' => '0'),
|
||||
array('metricCode' => 'test_code_5', 'value' => '0', 'deleted' => '0')
|
||||
);
|
||||
|
||||
foreach($records as $index => $record) {
|
||||
$record['id'] = $index + 1;
|
||||
$record['year'] = '2024';
|
||||
$record['month'] = '01';
|
||||
$record['day'] = sprintf('%02d', $index + 1);
|
||||
$record['date'] = '2024-01-' . sprintf('%02d', $index + 1) . ' 00:00:00';
|
||||
$tester->dao->insert(TABLE_METRICLIB)->data($record)->exec();
|
||||
}
|
||||
|
||||
// 3. 用户登录(选择合适角色)
|
||||
su('admin');
|
||||
|
||||
// 4. 创建测试实例(变量名与模块名一致)
|
||||
$metricTest = new metricTest();
|
||||
|
||||
// 5. 强制要求:必须包含至少5个测试步骤
|
||||
r($metricTest->executeDeleteTest('test_code_1')) && p() && e('5'); // 步骤1:删除test_code_1的记录(5个deleted=1)
|
||||
r($metricTest->executeDeleteTest('test_code_2')) && p() && e('2'); // 步骤2:删除test_code_2的记录(2个value=0)
|
||||
r($metricTest->executeDeleteTest('test_code_3')) && p() && e('5'); // 步骤3:删除test_code_3的记录(5个deleted=1)
|
||||
r($metricTest->executeDeleteTest('test_code_4')) && p() && e('0'); // 步骤4:删除test_code_4的记录(无符合条件记录)
|
||||
r($metricTest->executeDeleteTest('')) && p() && e('invalid_code'); // 步骤5:测试空的度量编码参数
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: Execute Delete test data
|
||||
desc: Test data for metricTao::executeDelete method
|
||||
|
||||
fields:
|
||||
- field: id
|
||||
range: 1-25
|
||||
- field: metricCode
|
||||
range: test_code_1{5},test_code_2{5},test_code_3{5},test_code_4{5},test_code_5{5}
|
||||
- field: value
|
||||
range: 0{3},100{2},0{2},200{3},0{5},300{5},0{5}
|
||||
- field: deleted
|
||||
range: 1{3},1{2},0{2},0{3},1{5},0{5},0{5}
|
||||
- field: year
|
||||
range: 2024{25}
|
||||
- field: month
|
||||
range: 01{25}
|
||||
- field: day
|
||||
range: 01-25:1
|
||||
- field: date
|
||||
range: 2024-01-01{25}
|
||||
format: "YYYY-MM-DD hh:mm:ss"
|
||||
Reference in New Issue
Block a user