我有以下名为Item_service的库:
class Item_Service {
private $items;
function __construct(Items $items)
{
$this->items = $items;
}
其中Items
是controllers/Items.php
的实例。
在我的名为Items_test.php
的测试类中,我尝试使用以下行加载Item_service
库:
$items = $this->CI->load->library('items/Item_service');
然后我得到错误说
TypeError: Argument 1 passed to Item_Service::__construct() must be an instance of Items, null given
我的测试类是基于kenjis/ci-phpunit-test
编写的。
如何将控制器注入此库以便能够测试库?另外,我可以测试控制器本身吗?控制器内部有很多辅助方法。
答案 0 :(得分:0)
答案是将其作为库调用的第二个参数传递到数组中。例如:
library('items/Item_service',array('controller'=>$this->CI));
然后从您的服务构造中不引用项目 - 它将是一个数组,但您的项目将在“控制器”键上可用。
$this->items = $items['controller'];