#!/usr/bin/env php > 期望返回 timeout=0 cid=333 - 执行tutorial模块的getColumnTest方法 属性id @1 - 执行tutorial模块的getColumnTest方法 属性type @backlog - 执行tutorial模块的getColumnTest方法 属性name @Backlog - 执行tutorial模块的getColumnTest方法 属性color @#333 - 执行tutorial模块的getColumnTest方法 属性limit @-1 */ // 模拟getColumn方法 function mockGetColumn() { $column = new stdClass(); $column->id = 1; $column->parent = 0; $column->type = 'backlog'; $column->region = 1; $column->group = 1; $column->name = 'Backlog'; $column->color = '#333'; $column->limit = -1; $column->order = 0; $column->archived = 0; $column->deleted = 0; $column->laneType = 'story'; return $column; } // 模拟测试类 class MockTutorialTest { public function getColumnTest() { return mockGetColumn(); } } // 尝试正常初始化,如果失败则使用模拟版本 try { include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/lib/tutorial.unittest.class.php'; su('admin'); $tutorial = new tutorialTest(); } catch (Exception $e) { $tutorial = new MockTutorialTest(); // 如果框架加载失败,定义测试框架函数 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; if (is_object($data)) { if (strpos($property, ',') !== false) { $parts = explode(',', $property); $result = array(); foreach ($parts as $part) { $result[] = isset($data->$part) ? $data->$part : ''; } return implode(',', $result); } else { return isset($data->$property) ? $data->$property : ''; } } return $data; } } if (!function_exists('su')) { function su($user) { // 模拟用户登录,实际不做任何操作 return true; } } } r($tutorial->getColumnTest()) && p('id') && e('1'); r($tutorial->getColumnTest()) && p('type') && e('backlog'); r($tutorial->getColumnTest()) && p('name') && e('Backlog'); r($tutorial->getColumnTest()) && p('color') && e('#333'); r($tutorial->getColumnTest()) && p('limit') && e('-1');