添加loader类单元测试

This commit is contained in:
thinkphp
2016-02-28 12:28:44 +08:00
parent 15a017b629
commit 8d79e07dc5
3 changed files with 77 additions and 4 deletions

View File

@@ -34,6 +34,8 @@ class Loader
// 记录加载信息
APP_DEBUG && self::$load[] = self::$map[$class];
include self::$map[$class];
} else {
return false;
}
} elseif ($file = self::findFileInComposer($class)) {
// Composer自动加载
@@ -43,7 +45,7 @@ class Loader
} else {
// 命名空间自动加载
if (!strpos($class, '\\')) {
return;
return false;
}
list($name, $class) = explode('\\', $class, 2);
if (isset(self::$namespace[$name])) {
@@ -53,7 +55,7 @@ class Loader
// 扩展类库命名空间
$path = EXTEND_PATH . $name . DS;
} else {
return;
return false;
}
$filename = $path . str_replace('\\', DS, $class) . EXT;
if (is_file($filename)) {
@@ -66,8 +68,10 @@ class Loader
include $filename;
} else {
Log::record('autoloader error : ' . $filename, 'notice');
return false;
}
}
return true;
}
// 注册classmap
@@ -199,8 +203,6 @@ class Loader
$class = str_replace(['.', '#'], [DS, '.'], $class);
if (isset($_file[$class . $baseUrl])) {
return true;
} else {
$_file[$class . $baseUrl] = true;
}
if (empty($baseUrl)) {
@@ -228,6 +230,7 @@ class Loader
return false;
}
include $filename;
$_file[$class . $baseUrl] = true;
return true;
}
return false;

View File

@@ -0,0 +1,7 @@
<?php
namespace top\test;
class Hello
{
}

View File

@@ -0,0 +1,63 @@
<?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>
// +----------------------------------------------------------------------
/**
* Loader测试
* @author liu21st <liu21st@gmail.com>
*/
namespace tests\thinkphp\library\think;
use think\Loader;
class loaderTest extends \PHPUnit_Framework_TestCase
{
public function testAutoload()
{
$this->assertEquals(true, Loader::autoload('think\Session'));
$this->assertEquals(false, Loader::autoload('think\COOKIE'));
$this->assertEquals(false, Loader::autoload('\think\Url'));
$this->assertEquals(false, Loader::autoload('think\Test'));
$this->assertEquals(false, Loader::autoload('my\HelloTest'));
}
public function testAddMap()
{
Loader::addMap('my\hello\Test', 'Test.php');
$this->assertEquals(false, Loader::autoload('my\hello\Test'));
}
public function testAddNamespace()
{
Loader::addNamespace('top', __DIR__ . DS . 'loader' . DS);
$this->assertEquals(true, Loader::autoload('top\test\Hello'));
}
public function testImport()
{
$this->assertEquals(true, Loader::import('think.log.driver.Sae'));
$this->assertEquals(false, Loader::import('think.log.driver.MyTest'));
}
public function testParseName()
{
$this->assertEquals('HelloTest', Loader::parseName('hello_test', 1));
$this->assertEquals('hello_test', Loader::parseName('HelloTest', 0));
}
public function testParseClass()
{
$this->assertEquals('app\index\controller\User', Loader::parseClass('index', 'controller', 'user'));
$this->assertEquals('app\index\controller\user\Type', Loader::parseClass('index', 'controller', 'user.type'));
$this->assertEquals('app\admin\model\UserType', Loader::parseClass('admin', 'model', 'user_type'));
}
}