}
}
return $url;
}
?>
PHP代码
require_once 'functions.php';
class functionsTest extends PHPUnit_Framework_TestCase
{
/**
* 确认url()返回预期的字符串
*/
public function testurl()
{
define('', 'index.php');
C('VAR_MODULE', 'module');
C('VAR_ACTION', 'action');
C('VAR_ROUTER', 'route');
// 测试通常模式URL
$uri = url('Index', 'Home', '', APP_NAME, array('q' => 'test', 'msg' => 'OK'));
$this->assertEquals('index.php?module=Home&action=Index&q=test&msg=OK', $uri);
// 测试通常模式路由
$uri = url('Index', 'Home', 'default', APP_NAME, array('q' => 'test', 'msg' => 'OK'));
$this->assertEquals('index.php?route=default&q=test&msg=OK', $uri);
C('DISPATCH_ON', true);
C('URL_MODEL', 1);
C('PATH_MODEL', 1);
// 测试普通PATHINFO模式URL
$uri = url('Index', 'Home', '', APP_NAME, array('q' => 'test', 'msg' => 'OK'));
$this->assertEquals('index.php/module/Home/action/Index/q/test/msg/OK', $uri);
// 测试普通PATHINFO模式路由
$uri = url('Index', 'Home', 'default', APP_NAME, array('q' => 'test', 'msg' => 'OK'));
$this->assertEquals('index.php/route/default/q/test/msg/OK', $uri);
C('PATH_MODEL', 2);
C('PATH_DEPR', '/');
// 测试智能PATHINFO模式URL
$uri = url('Index', 'Home', '', APP_NAME, array('q' => 'test', 'msg' => 'OK'));
$this->assertEquals('index.php/Home/Index/q/test/msg/OK', $uri);
// 测试智能PATHINFO模式路由
$uri = url('Index', 'Home', 'default', APP_NAME, array('q' => 'test', 'msg' => 'OK'));
$this->assertEquals('index.php/default/q/test/msg/OK', $uri);
}
}
?>
异常测试
有时程序执行了非法操作而抛出异常,我们需要模拟某个异常,然后捕捉它是否触发了该异常。
PHP代码
class UnitTest extends PHPUnit_Framework_TestCase
{
/**
* 测试异常
*/
public function testException()
{
// 期望Exception异常
$this->setExpectedException('Exception');
// 抛出Exception异常
throw new Exception('TestException');
}
}
?>
输出测试
有时某个方法并不返回而输出某些内容,我们需要继承PHPUnit_Extensions_OutputTestCase类来捕捉输出内容。PHPUnit默认不载入扩展类,需要自己加载。
PHP代码
// 载入输出测试用例扩展
require_once 'PHPUnit/Extensions/OutputTestCase.php';
class UnitTest extends PHPUnit_Extensions_OutputTestCase
{
/**
* 测试输出
*/
public function testOutput()
{
// 期望输出的内容是字符串 'Hello'
$this->expectOutputString('Hello');
// 输出 'Hello'
echo 'Hello';
}
}
?>
数据库测试
PHPUnit的数据库测试并不完善,只提供了assertTablesEqual和assertDataSetsEqual两个断言与 createFlatXMLDataSet和createXMLDataSet创建XML数据集的方法。无法进行全面的数据操作测试,建议使用 DBUnit。
附录
PHPUnit断言参考
assertArrayHasKey($key, array $array, $message = '')
assertArrayNotHasKey($key, array $array, $message = '')
assertAttributeContains($needle, $haystackAttributeName, $haystackClassOrObject, $message = '')
assertAttributeContainsOnly($type, $haystackAttributeName, $haystackClassOrObject, $isNativeType = NULL, $message = '')
原文转自:http://www.uml.org.cn/Test/200910169.asp