gpt4 book ai didi

php - Codeigniter:如何测试在构造函数中采用 Controller 实例的库?

转载 作者:搜寻专家 更新时间:2023-10-31 21:49:05 26 4
gpt4 key购买 nike

我有以下名为 Item_service 的库:

class Item_Service {
private $items;

function __construct(Items $items)
{
$this->items = $items;
}

其中 Itemscontrollers/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编写的。

我应该如何将 Controller 注入(inject)到这个库中才能测试这个库?另外,我可以测试 Controller 本身吗? Controller 内部有很多辅助方法。

最佳答案

答案是将它作为第二个参数传递给库调用。例如:

library('items/Item_service',array('controller'=>$this->CI));

然后从您的服务构造中不要引用 Items - 它将是一个数组,但您的 Items 将在“controller”键上可用。

$this->items = $items['controller'];

关于php - Codeigniter:如何测试在构造函数中采用 Controller 实例的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47710369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com