+ [misc] Add unit tests for blockZen::printBlock4Json() 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:09:49 +08:00
co-authored by Claude
parent 5b03f325ea
commit 3a6aefcfc9
2 changed files with 87 additions and 0 deletions
@@ -5514,4 +5514,58 @@ class blockTest
return $result;
}
/**
* Test printBlock4Json method.
*
* @param object|null $view
* @access public
* @return mixed
*/
public function printBlock4JsonTest($view = null)
{
global $tester;
// 创建blockZen实例
include_once dirname(__FILE__, 3) . '/model.php';
if (!class_exists('block')) {
class_alias('blockModel', 'block');
}
include_once dirname(__FILE__, 3) . '/zen.php';
$blockZen = new blockZen();
$blockZen->block = $this->objectModel;
// 设置view对象
if($view !== null) {
$blockZen->view = $view;
} else {
// 创建默认view对象用于测试
$blockZen->view = new stdclass();
$blockZen->view->app = 'test_app';
$blockZen->view->config = 'test_config';
$blockZen->view->lang = 'test_lang';
$blockZen->view->header = 'test_header';
$blockZen->view->position = 'test_position';
$blockZen->view->moduleTree = 'test_tree';
$blockZen->view->testData = 'test_value';
}
// 使用反射访问受保护的方法
$reflection = new ReflectionClass($blockZen);
$method = $reflection->getMethod('printBlock4Json');
$method->setAccessible(true);
// 捕获输出
ob_start();
$result = $method->invoke($blockZen);
$output = ob_get_clean();
if(dao::isError()) return dao::getError();
// 返回输出的JSON数据和实际结果
return array('output' => $output, 'result' => $result, 'view' => $blockZen->view);
}
}
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env php
<?php
/**
title=测试 blockZen::printBlock4Json();
timeout=0
cid=0
- 步骤1:验证testData属性保留第view条的testData属性 @test_value
- 步骤2:验证app属性被移除第view条的app属性 @~~
- 步骤3:验证config属性被移除第view条的config属性 @~~
- 步骤4:验证lang属性被移除第view条的lang属性 @~~
- 步骤5:验证header属性被移除第view条的header属性 @~~
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/block.unittest.class.php';
// 2. 用户登录(选择合适角色)
su('admin');
// 3. 创建测试实例(变量名与模块名一致)
$blockTest = new blockTest();
// 4. 🔴 强制要求:必须包含至少5个测试步骤
r($blockTest->printBlock4JsonTest()) && p('view:testData') && e('test_value'); // 步骤1:验证testData属性保留
r($blockTest->printBlock4JsonTest()) && p('view:app') && e('~~'); // 步骤2:验证app属性被移除
r($blockTest->printBlock4JsonTest()) && p('view:config') && e('~~'); // 步骤3:验证config属性被移除
r($blockTest->printBlock4JsonTest()) && p('view:lang') && e('~~'); // 步骤4:验证lang属性被移除
r($blockTest->printBlock4JsonTest()) && p('view:header') && e('~~'); // 步骤5:验证header属性被移除