1 thinkphp 是一个mvc 框架,而且使用单一入口文件,即所有应用必须经过入口文件,否则无法访问model,所以只要能把action 模块撤销,那问题就OK
2 在 thinkphp 做单元测试,主要是模拟测试环境,比如 配置文件,加载模块,session,cookie 等等,所以如没有必要,尽量用thinkphp 系统加载所有环境,
不过也可以自己模拟测试环境,不过要求对thinkphp 内部架构有很深的了解
3 thinkphp 的App.class.php 的run 方法 代码如下
/**
+----------------------------------------------------------
* 运行应用实例 入口文件使用的快捷方法
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @return void
+----------------------------------------------------------
*/
static public function run() {
// 项目初始化标签
tag('app_init');
App::init();
// 项目开始标签
tag('app_begin');
// Session初始化
session(C('SESSION_OPTIONS'));
// 记录应用初始化时间
G('initTime');
App::exec();
// 项目结束标签
tag('app_end');
// 保存日志记录
if(C('LOG_RECORD')) Log::save();
return ;
}
App::exec(); 此函数 实例化了action 类,所有只要撤掉 调用 App::exec(); 就可以跳过action
为了能兼容测试环境与真是环境,设置了个开关
if(!APP_PHPUNIT){
App::exec();
}
测试框架入口文件代码BaseModelTest.php
<?php
/**
* filename:前台入口文件
* desc:前台入口文件,框架选型:ThinkPHP
* create:创建时间格式:2012-04-16
* author:xxxxx
*/
// 定义ThinkPHP框架路径
define('THINK_PATH', '../../TP/');
//定义项目名称和路径
define('APP_NAME', 'HouTai');
define('APP_PATH', '../../HouTai/');
define('RUNTIME_PATH',APP_PATH.'../Runtime/'.APP_NAME.'/');
define("APP_DEBUG", false);
//model测试开关
define("APP_PHPUNIT", true);
// 加载框架公共入口文件
require THINK_PATH."/ThinkPHP.php";
?>
分组框架入口文件代码admin.php
<?php
/**
* filename:前台入口文件
* desc:前台入口文件,框架选型:ThinkPHP
* create:创建时间格式:2012-04-16
* author:xxxxx
*/
// 定义ThinkPHP框架路径
define('THINK_PATH', './TP/');
//定义项目名称和路径
define('APP_NAME', 'HouTai');
define('APP_PATH', './HouTai/');
define('RUNTIME_PATH',APP_PATH.'../Runtime/'.APP_NAME.'/');
define("APP_DEBUG", TRUE);
//model测试开关
define("APP_PHPUNIT", false);
// 加载框架公共入口文件
require THINK_PATH."/ThinkPHP.php";
?>