IndexController
클래스에 대해 단위 테스트를 실행하는 데 문제가 있습니다.ZF3 부트 스트랩의 단위 테스트 인증
단위 테스트는 단지합니다 (unit-test tutorial of zf3에서 영감) 다음을 수행합니다
IndexControllerTest.php
:
Module.php
에서
public function testIndexActionCanBeAccessed()
{
$this->dispatch('/', 'GET');
$this->assertResponseStatusCode(200);
$this->assertModuleName('main');
$this->assertControllerName(IndexController::class); // as specified in router's controller name alias
$this->assertControllerClass('IndexController');
$this->assertMatchedRouteName('main');
}
, 다른 사람을 그는 login
경로로 리디렉션됩니다.
Module.php
public function onBootstrap(MvcEvent $mvcEvent)
{
/** @var AuthService $authService */
$authService = $mvcEvent->getApplication()->getServiceManager()->get(AuthService::class);
$this->auth = $authService->getAuth(); // returns the Zend AuthenticationService object
// store user and role in global viewmodel
if ($this->auth->hasIdentity()) {
$curUser = $this->auth->getIdentity();
$mvcEvent->getViewModel()->setVariable('curUser', $curUser['system_name']);
$mvcEvent->getViewModel()->setVariable('role', $curUser['role']);
$mvcEvent->getApplication()->getEventManager()->attach(MvcEvent::EVENT_ROUTE, [$this, 'checkPermission']);
} else {
$mvcEvent->getApplication()->getEventManager()->attach(MvcEvent::EVENT_DISPATCH, [$this, 'authRedirect'], 1000);
}
}
사용자 역할과 유사한 경로 ACL에 저장하는 경우에있어서 checkPermission
단지 확인한다. 이 난 404
문제 상태 코드를 리디렉션 실패하면 단위 테스트가 실패 "의 응답 코드를 어서 실패"200 302 " 따라서 단위 테스트는으로 점프"실제 상태 코드는 " . 리디렉션이 일어나는 Module.php
내 onBootstrap
방식과 다른 경우
나는 그것은 다음 TestCase에에 setUp
하지만 작동하지 않습니다 않았다
public function setUp()
{
// override default configuration values
$configOverrides = [];
$this->setApplicationConfig(ArrayUtils::merge(
include __DIR__ . '/../../../../config/application.config.php',
$configOverrides
));
$user = new Employee();
$user->id = 1;
$user->system_name = 'admin';
$user->role = 'Admin';
$this->authService = $this->prophesize(AuthService::class);
$auth = $this->prophesize(AuthenticationService::class);
$auth->hasIdentity()->willReturn(true);
$auth->getIdentity()->willReturn($user);
$this->authService->getAuth()->willReturn($auth->reveal());
$this->getApplicationServiceLocator()->setAllowOverride(true);
$this->getApplicationServiceLocator()->setService(AuthService::class, $this->authService->reveal());
$this->getApplicationServiceLocator()->setAllowOverride(false);
parent::setUp();
}
힌트는 매우 젠드 프레임 워크 2에서 약간 다를 수 있습니다
코드
을 감사합니다하지만 당신은 zf2에서 간단한 동작하는 예제가 있다면 어쩌면 내가 zf3 스타일로 변환 할 수 있습니다.나는 ZfcUser를 사용하지 않습니다 - 단지 젠드 - ACL/젠드 인증 물건