mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 15:12:48 +08:00
添加loader类单元测试
This commit is contained in:
@@ -34,6 +34,8 @@ class Loader
|
|||||||
// 记录加载信息
|
// 记录加载信息
|
||||||
APP_DEBUG && self::$load[] = self::$map[$class];
|
APP_DEBUG && self::$load[] = self::$map[$class];
|
||||||
include self::$map[$class];
|
include self::$map[$class];
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
} elseif ($file = self::findFileInComposer($class)) {
|
} elseif ($file = self::findFileInComposer($class)) {
|
||||||
// Composer自动加载
|
// Composer自动加载
|
||||||
@@ -43,7 +45,7 @@ class Loader
|
|||||||
} else {
|
} else {
|
||||||
// 命名空间自动加载
|
// 命名空间自动加载
|
||||||
if (!strpos($class, '\\')) {
|
if (!strpos($class, '\\')) {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
list($name, $class) = explode('\\', $class, 2);
|
list($name, $class) = explode('\\', $class, 2);
|
||||||
if (isset(self::$namespace[$name])) {
|
if (isset(self::$namespace[$name])) {
|
||||||
@@ -53,7 +55,7 @@ class Loader
|
|||||||
// 扩展类库命名空间
|
// 扩展类库命名空间
|
||||||
$path = EXTEND_PATH . $name . DS;
|
$path = EXTEND_PATH . $name . DS;
|
||||||
} else {
|
} else {
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
$filename = $path . str_replace('\\', DS, $class) . EXT;
|
$filename = $path . str_replace('\\', DS, $class) . EXT;
|
||||||
if (is_file($filename)) {
|
if (is_file($filename)) {
|
||||||
@@ -66,8 +68,10 @@ class Loader
|
|||||||
include $filename;
|
include $filename;
|
||||||
} else {
|
} else {
|
||||||
Log::record('autoloader error : ' . $filename, 'notice');
|
Log::record('autoloader error : ' . $filename, 'notice');
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 注册classmap
|
// 注册classmap
|
||||||
@@ -199,8 +203,6 @@ class Loader
|
|||||||
$class = str_replace(['.', '#'], [DS, '.'], $class);
|
$class = str_replace(['.', '#'], [DS, '.'], $class);
|
||||||
if (isset($_file[$class . $baseUrl])) {
|
if (isset($_file[$class . $baseUrl])) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
|
||||||
$_file[$class . $baseUrl] = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($baseUrl)) {
|
if (empty($baseUrl)) {
|
||||||
@@ -228,6 +230,7 @@ class Loader
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
include $filename;
|
include $filename;
|
||||||
|
$_file[$class . $baseUrl] = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
7
tests/thinkphp/library/think/loader/test/Hello.php
Normal file
7
tests/thinkphp/library/think/loader/test/Hello.php
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?php
|
||||||
|
namespace top\test;
|
||||||
|
|
||||||
|
class Hello
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
63
tests/thinkphp/library/think/loaderTest.php
Normal file
63
tests/thinkphp/library/think/loaderTest.php
Normal 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'));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user