안녕하세요, 젠드에 새로 왔으며 Z2로 개발하도록 요청 받았습니다. 컨트롤러 플러그인을 통해 재사용 할 수있는 기능을 추가하려고하지만 단위 테스트에 성공하지 못했습니다. 그것은 정상적인 응용 프로그램 내부에서 잘 작동합니다.젠드 프레임 워크 2 컨트롤러 유닛 테스트에서 사용할 수없는 플러그인
// 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
정말 고마워요! 그게 날 죽였어! –
이것은 고대의 답변이지만 Jurian이나 다른 사람들이이 답변을 찾으면 $ this-> controller-> indexAction()을 호출하자마자 문제가 발생할 가능성이 높습니다. 컨트롤러 액션은 컨트롤러가 상속받은 AbstractActionController 클래스에서 무언가를 호출 할 것입니다. 프레임 워크가 초기화되지 않고 작동하지 않습니다. –
Greg 일 필요는 없습니다. indexAction에 추상 메소드에 대한 호출이 없으면 모두 정상입니다. –