mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-01 12:42:48 +08:00
完善app单元测试
This commit is contained in:
@@ -212,11 +212,11 @@ class App
|
||||
|
||||
// 获取控制器名
|
||||
$controllerName = strip_tags($result[1] ?: Config::get('default_controller'));
|
||||
define('CONTROLLER_NAME', Config::get('url_controller_convert') ? strtolower($controllerName) : $controllerName);
|
||||
defined('CONTROLLER_NAME') or define('CONTROLLER_NAME', Config::get('url_controller_convert') ? strtolower($controllerName) : $controllerName);
|
||||
|
||||
// 获取操作名
|
||||
$actionName = strip_tags($result[2] ?: Config::get('default_action'));
|
||||
define('ACTION_NAME', Config::get('url_action_convert') ? strtolower($actionName) : $actionName);
|
||||
defined('ACTION_NAME') or define('ACTION_NAME', Config::get('url_action_convert') ? strtolower($actionName) : $actionName);
|
||||
|
||||
// 执行操作
|
||||
if (!preg_match('/^[A-Za-z](\/|\.|\w)*$/', CONTROLLER_NAME)) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user