+ [misc] Add unit tests for transferZen::printCell() method

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-11-12 17:45:46 +08:00
co-authored by Claude
parent 05d77bd744
commit caa06289e5
2 changed files with 40 additions and 17 deletions
@@ -223,28 +223,18 @@ class transferZenTest
}
try {
// 获取transfer对象并设置transferConfig
$transferZen = $tester->loadTarget('transfer', '', 'zen');
if(!property_exists($transferZen, 'transferConfig')) {
$transferZen->transferConfig = new stdClass();
// 获取zen对象并设置transferConfig
$zenTest = $tester->app->loadTarget('transfer', '', 'zen');
if(!property_exists($zenTest, 'transferConfig')) {
$zenTest->transferConfig = new stdClass();
}
$transferZen->transferConfig->textareaFields = 'desc,content,steps';
// 为避免特殊字段的复杂逻辑,我们直接调用zen方法但提供必要的上下文
$zenObject = initReference('transfer');
// 设置必要的属性
if(!property_exists($zenObject, 'transferConfig')) {
$zenObject->transferConfig = new stdClass();
}
$zenObject->transferConfig->textareaFields = 'desc,content,steps';
$zenTest->transferConfig->textareaFields = 'desc,content,steps';
// 使用反射调用private方法
$reflection = new ReflectionClass($zenObject);
$reflection = new ReflectionClass($zenTest);
$method = $reflection->getMethod('printCell');
$method->setAccessible(true);
$result = $method->invoke($zenObject, $module, $field, $control, $name, $selected, $values, $row);
$result = $method->invokeArgs($zenTest, array($module, $field, $control, $name, $selected, $values, $row));
if(dao::isError()) return dao::getError();
return $result;
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env php
<?php
/**
title=测试 transferZen::printCell();
timeout=0
cid=0
- 步骤1:测试select控件生成 @1
- 步骤2:测试hidden控件生成 @1
- 步骤3:测试date控件生成 @1
- 步骤4:测试textarea控件生成 @1
- 步骤5:测试普通input控件生成 @1
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/transferzen.unittest.class.php';
// 2. 用户登录(选择合适角色)
su('admin');
// 3. 创建测试实例(变量名与模块名一致)
$transferTest = new transferZenTest();
// 4. 🔴 强制要求:必须包含至少5个测试步骤
r(strpos($transferTest->printCellTest('task', 'status', 'select', 'status[1]', 'wait', array('wait' => '未开始', 'doing' => '进行中', 'done' => '已完成'), 1), '<select') !== false) && p() && e('1'); // 步骤1:测试select控件生成
r(strpos($transferTest->printCellTest('task', 'execution', 'hidden', 'execution[1]', '101', array(), 1), "type='hidden'") !== false) && p() && e('1'); // 步骤2:测试hidden控件生成
r(strpos($transferTest->printCellTest('task', 'deadline', 'date', 'deadline[1]', '2025-12-31', array(), 1), 'form-date') !== false) && p() && e('1'); // 步骤3:测试date控件生成
r(strpos($transferTest->printCellTest('task', 'desc', 'textarea', 'desc[1]', '任务描述', array(), 1), '<textarea') !== false) && p() && e('1'); // 步骤4:测试textarea控件生成
r(strpos($transferTest->printCellTest('task', 'name', 'input', 'name[1]', '任务名称', array(), 1), 'form-control') !== false) && p() && e('1'); // 步骤5:测试普通input控件生成