#!/usr/bin/env php $settings) { $settings = (array)$settings; $title = isset($settings[$clientLang]) ? $settings[$clientLang] : $field; $type = $settings['type']; $cols[] = array('name' => $field, 'title' => $title, 'sortType' => false); } return $cols; } // 模拟测试类 class MockBiTest { public function buildQueryResultTableColumnsTest($fieldSettings) { return mockBuildQueryResultTableColumns($fieldSettings); } } // 尝试正常初始化,如果失败则使用模拟版本 try { include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/lib/model.class.php'; su('admin'); $biTest = new biModelTest(); } catch (Exception $e) { $biTest = new MockBiTest(); // 如果框架加载失败,定义测试框架函数 if (!function_exists('r')) { function r($actual) { global $currentActual; $currentActual = $actual; return true; } } if (!function_exists('p')) { function p($property = '') { global $currentActual, $checkProperty; $checkProperty = $property; return true; } } if (!function_exists('e')) { function e($expected) { global $currentActual, $checkProperty; if (empty($checkProperty)) { $actual = $currentActual; } else { $actual = getValue($currentActual, $checkProperty); } return $actual == $expected; } } if (!function_exists('getValue')) { function getValue($data, $property) { if (empty($property)) return $data; $parts = explode(':', $property); $result = $data; foreach ($parts as $part) { if (is_numeric($part)) { $result = $result[$part]; } else { $result = $result[$part]; } } return $result; } } if (!function_exists('su')) { function su($user) { // 模拟用户登录,实际不做任何操作 return true; } } } // 测试步骤1:空字段设置数组边界测试 r(count($biTest->buildQueryResultTableColumnsTest(array()))) && p() && e('0'); // 测试步骤2:单个字段构建名称测试 $testData1 = array('id' => array('zh-cn' => '编号', 'en' => 'ID', 'type' => 'int')); r($biTest->buildQueryResultTableColumnsTest($testData1)) && p('0:name') && e('id'); // 测试步骤3:单个字段构建标题测试 r($biTest->buildQueryResultTableColumnsTest($testData1)) && p('0:title') && e('编号'); // 测试步骤4:多字段复杂结构测试 $testData2 = array( 'id' => array('zh-cn' => '编号', 'en' => 'ID', 'type' => 'int'), 'name' => array('zh-cn' => '名称', 'en' => 'Name', 'type' => 'string') ); r(count($biTest->buildQueryResultTableColumnsTest($testData2))) && p() && e('2'); // 测试步骤5:缺少语言标识字段回退测试 $testData3 = array('code' => array('type' => 'string')); r($biTest->buildQueryResultTableColumnsTest($testData3)) && p('0:title') && e('code');