This commit is contained in:
thinkphp
2016-03-04 17:42:41 +08:00
6 changed files with 136 additions and 8 deletions

View File

@@ -108,7 +108,7 @@ thinkphp5 的测试的主要流程是跟 thinkphp 的系统流程是相似的,
|模块|认领人|进度|
|---|---|---|
|Base|||
|App|Haotong Lin||
|App|Haotong Lin||
|Build|刘志淳||
|Config|Haotong Lin|√|
|Cache|||
@@ -117,6 +117,7 @@ thinkphp5 的测试的主要流程是跟 thinkphp 的系统流程是相似的,
|Db|||
|Debug|大漠|√|
|Error|大漠||
|Exception|Haotong Lin|√|
|Hook|流年|√|
|Input|Haotong Lin|√|
|Lang|流年|√|

View File

@@ -16,12 +16,82 @@
namespace tests\thinkphp\library\think;
use ReflectionClass;
use think\App;
use think\Config;
function func_trim($value)
{
return trim($value);
}
function func_strpos($haystack, $needle)
{
return strpos($haystack, $needle);
}
class AppInvokeMethodTestClass
{
public static function staticRun($string)
{
return $string;
}
public function run($string)
{
return $string;
}
}
class appTest extends \PHPUnit_Framework_TestCase
{
public function testRun()
{
//\think\App::run();
//$this->expectOutputString('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP5</b></p></div><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_bd568ce7058a1091"></thinkad>');
// todo...
Config::set('root_namespace', ['/path/']);
App::run();
$expectOutputString = '<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP5</b></p></div><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_bd568ce7058a1091"></thinkad>';
$this->expectOutputString($expectOutputString);
$rc = new ReflectionClass('\think\Loader');
$ns = $rc->getProperty('namespace');
$ns->setAccessible(true);
$this->assertEquals(true, in_array('/path/', $ns->getValue()));
$this->assertEquals(true, function_exists('L'));
$this->assertEquals(true, function_exists('C'));
$this->assertEquals(true, function_exists('I'));
$this->assertEquals(Config::get('default_timezone'), date_default_timezone_get());
}
// function调度
public function testInvokeFunction()
{
$args1 = ['a b c '];
$this->assertEquals(
trim($args1[0]),
App::invokeFunction('tests\thinkphp\library\think\func_trim', $args1)
);
$args2 = ['abcdefg', 'g'];
$this->assertEquals(
strpos($args2[0], $args2[1]),
App::invokeFunction('tests\thinkphp\library\think\func_strpos', $args2)
);
}
// 类method调度
public function testInvokeMethod()
{
$_GET = ['thinkphp'];
$result = App::invokeMethod(['tests\thinkphp\library\think\AppInvokeMethodTestClass', 'run']);
$this->assertEquals('thinkphp', $result);
$_GET = ['thinkphp'];
$result = App::invokeMethod('tests\thinkphp\library\think\AppInvokeMethodTestClass::staticRun');
$this->assertEquals('thinkphp', $result);
}
}

View File

@@ -0,0 +1,51 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
/**
* exception类测试
* @author Haotong Lin <lofanmi@gmail.com>
*/
namespace tests\thinkphp\library\think;
use ReflectionMethod;
use think\Exception as ThinkException;
class MyException extends ThinkException
{
}
class exceptionTest extends \PHPUnit_Framework_TestCase
{
public function testGetHttpStatus()
{
try {
throw new ThinkException("Error Processing Request", 1);
} catch (ThinkException $e) {
$this->assertEquals(500, $e->getHttpStatus());
}
}
public function testDebugData()
{
$data = ['a' => 'b', 'c' => 'd'];
try {
$e = new MyException("Error Processing Request", 1);
$method = new ReflectionMethod($e, 'setData');
$method->setAccessible(true);
$method->invokeArgs($e, ['test', $data]);
throw $e;
} catch (MyException $e) {
$this->assertEquals(['test' => $data], $e->getData());
}
}
}

View File

@@ -94,7 +94,8 @@ class routeTest extends \PHPUnit_Framework_TestCase
{
Route::pattern(['id' => '\d+', 'name' => '\w{6,25}']);
Route::group('group', [':id' => 'index/hello', ':name' => 'index/say']);
$this->assertEquals(false, Route::check('group/think'));
$this->assertEquals(false, Route::check('empty/think'));
$this->assertEquals(['type' => 'module', 'module' => [null, 'index', 'say']], Route::check('group/think'));
$this->assertEquals(['type' => 'module', 'module' => [null, 'index', 'hello']], Route::check('group/10'));
$this->assertEquals(['type' => 'module', 'module' => [null, 'index', 'say']], Route::check('group/thinkphp'));
}

View File

@@ -124,7 +124,12 @@ class viewTest extends \PHPUnit_Framework_TestCase
$view_instance = \think\View::instance();
$method = new \ReflectionMethod('\think\View', 'ParseTemplate');
$method->setAccessible(true);
$this->assertEquals(DS . 'theme_name' . DS . 'template_name.html', $method->invoke($view_instance, 'template_name'));
if (defined('CONTROLLER_NAME')) {
$expect_data = DS . 'theme_name' . DS . CONTROLLER_NAME . DS . 'template_name.html';
} else {
$expect_data = DS . 'theme_name' . DS . 'template_name.html';
}
$this->assertEquals($expect_data, $method->invoke($view_instance, 'template_name'));
}
/**