php 测试控制器,php – 如何使用CodeIgniter测试控制器?

我有一个使用CodeIgniter MVC框架构建的

PHP Web应用程序.我想测试各种控制器类.我正在使用

Toast进行单元测试.我的控制器没有状态,他们处理的一切都被保存到会话中或传递到视图来显示.创建一个模拟会话对象并测试它是否正常工作是否直接(只需创建一个模拟对象并使用$controller-> session = $mock注入它).

我不知道的是如何处理意见.在CodeIgniter中,视图被加载为:

$this->load->view($view_name, $vars, $return);

由于我不想改变CI代码,我尽管可以创建一个模拟装载程序并替换原来的代码.而这里就是这个问题,我找不到从CI_Loader派生一个新类的方法.

如果我不包括系统/库/ Loader.php文件,CI_Loader类是未定义的,我不能继承它:

class Loader_mock extends CI_Loader

如果我包括文件(使用require_once),我得到错误:

Cannot redeclare class CI_Loader

看起来CI代码本身不会使用require_once,无论什么原因.

有人在这里有经验的单元测试CodeIgniter动力应用程序?

编辑:我试图在运行时将一个真正的加载器对象注入一个mock类,并使用__call,__set,__get,__isset和__unset重定向所有调用和变量.但是,它似乎不工作(我没有得到任何错误,只是没有输出,即Toast的空白页).以下是代码:

class Loader_mock

{

public $real_loader;

public $varijable = array();

public function Loader_mock($real)

{

$this->real_loader = $real;

}

public function __call($name, $arguments)

{

return $this->real_loader->$name($arguments);

}

public function __set($name, $value)

{

return $this->real_loader->$name = $value;

}

public function __isset($name)

{

return isset($this->real_loader->$name);

}

public function __unset($name)

{

unset($this->loader->$name);

}

public function __get($name)

{

return $this->real_loader->$name;

}

public function view($view, $vars = array(), $return = FALSE)

{

$varijable = $vars;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值