gpt4 book ai didi

zend-framework2 - Zend Framework 2 Controller 插件在单元测试中不可用

转载 作者:行者123 更新时间:2023-12-04 07:14:24 24 4
gpt4 key购买 nike

大家好,我是 Zend 的新手,被要求使用 Z2 进行开发。我正在尝试通过 Controller 插件添加可重用的功能,但我没有成功进行单元测试。它在常规应用程序中运行良好。

// Application\Controller\Plugin\HelloWorld.php
namespace Application\Controller\Plugin;

use Zend\Mvc\Controller\Plugin\AbstractPlugin;
use Zend\Http\Client;
use Zend\Http\Request;

class HelloWorld extends AbstractPlugin
{

public function helloWorld()
{
return "HELLO WORLD";
}
}

// Application\Controller\IndexController.php
namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class IndexController extends AbstractActionController
{

public function indexAction()
{
echo $this->helloworld()->helloWorld();
}
}

//Application\config\module.config.php
...
'controller_plugins' => array(
'invokables' => array(
'helloworld' => 'Application\Controller\Plugin\HelloWorld',
),
),
...

我得到的错误是:
Zend\ServiceManager\Exception\ServiceNotFoundException: Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for helloworld

最佳答案

如果为 Controller 创建单元测试,则在专用的受控单元中测试 Controller 。您不初始化应用程序,不加载模块,也不解析完整的配置文件。

要对 Controller 进行单元测试,请自己在 setUp() 中添加插件方法将其直接放在服务管理器中调用。如果你想测试你的配置是否有效,你宁愿看功能测试。首先尝试引导完整的应用程序,然后通过创建请求和断言响应来测试您的 Controller 。

因为功能测试有点难解决,所以从 Controller (插件)开始在单元测试中进行测试更容易:

namespace SlmLocaleTest\Locale;

use PHPUnit_Framework_TestCase as TestCase;
use Application\Controller\IndexController;

class IndexControllerTest extends TestCase
{
public function setUp()
{
$controller = new IndexController;
$controller->getPluginManager()
->setInvokableClass('helloworld', 'Application\Controller\Plugin\HelloWorld');

$this->controller = $controller;
}

public function testCheckSomethingHere()
{
$response = $this->controller->indexAction();
}
}

您可以替换 setInvokableClass()通过 setService()例如注入(inject)一个模拟。

关于zend-framework2 - Zend Framework 2 Controller 插件在单元测试中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13149454/

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