0

Я новичок в ZF2, и я хочу протестировать метод входа в устаревшем приложении. Или ввести модульные тесты в старом коде :). Код, который у меня есть, не выполнен в соответствии с руководством; кажется супер странным, если сравнить его с примерами руководства или даже с лучшими практиками. I метод Войти, как это:ZF2 Единичный тест входа в wierd code

http://pastebin.com/ZzvuBcGe

в этом случае наследство является то, что Helper, Телеги, пользователей, Userslogs и Usertests являются модели .... все они распространяются БД.

В module.config.php у меня есть этот код:

'service_manager' => array(
    'factories' => array(
     'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', 
     'AuthService' => function ($sm) { 
      $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter'); 
      $dbTableAuthAdapter = new DbTableAuthAdapter(
       $dbAdapter, 
       'tbl_user', 
       'USER_LOGIN', 
       'USER_PASSWORD', 
       'MD5(?)' 
      ); 
      $authService = new AuthenticationService(); 
      $authService->setAdapter($dbTableAuthAdapter); 
      $authService->setStorage(new StorageSession('session')); 
      return $authService; 
     }, 
     'Helper' => function ($sm) { 
      return new Helper($sm); 
     }, 
     'Users' => function ($sm) { 
      return new Users($sm); 
     }, 
     'Carts' => function ($sm) { 
      return new Carts($sm); 
     } 
... 

Я знаю, что DbTableAuthAdapter является устаревшим, но я должен понять, как изменить это для того, чтобы изменить его наилучшим образом. У меня возникло ощущение, что если я изменю это, все модели пользователей, тележек и т. Д. Будут разбиваться.

Мой тестовый блок, как это на данный момент:

<?php namespace ApplicationTest\Controller; 
use Application\Controller\LoginController; 

use Zend\Stdlib\ArrayUtils; 
use Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase; 

class LoginControllerTest extends AbstractHttpControllerTestCase 
{ 
protected $traceError = true; 

public function setUp() 
{ 
    parent::setUp(); 
    // The module configuration should still be applicable for tests. 
    // You can override configuration here with test case specific values, 
    // such as sample view templates, path stacks, module_listener_options, 
    // etc. 
    $configOverrides = []; 

    $this->setApplicationConfig(ArrayUtils::merge(
     // Grabbing the full application configuration: 
     include __DIR__ . '/../../../../../config/application.config.php', 
     $configOverrides 
    )); 

} 

public function loginCredentialsProvider() 
{ 
    return [ 
     ['userDev', '12345'], 
    ]; 
} 

/** 
* @covers LoginController::loginAction() 
* @dataProvider loginCredentialsProvider 
* @param $username 
* @param $password 
*/ 
public function testLogin($username, $password) 
{ 
    // prepare request 
//$this->getRequest() 
//->setMethod('POST') 
//->setPost(new Parameters(array(
//'user_login' => $username, 
//'user_password' => $password 
//))); 
$helperMock = $this->getMockBuilder('Application\Model\Helper') 
->disableOriginalConstructor() 
->getMock(); 
$serviceManager = $this->getApplicationServiceLocator(); 
$serviceManager->setAllowOverride(true); 
$serviceManager->setService('Application\Model\Helper', $helperMock); 

    // send request 
    $this->dispatch('/login', 'POST', $this->loginCredentialsProvider()); 

    $this->assertEquals('userDev12345', $username . $password); 
//  $this->markTestIncomplete('login incomplete'); 
} 

/** 
* @depends testLogin 
*/ 
public function testLogout() 
{ 
    $this->markTestIncomplete('logout incomplete'); 
} 
} 

Я пробовал разные способы, чтобы проверить, но нет Сукчес и, конечно, что я получаю ошибки:

Zend\ServiceManager\Exception\ServiceNotCreatedException: An exception was raised while creating "Helper"; no instance returned 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:930 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:1057 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:633 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:593 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:525 
/project/module/Application/src/Application/Controller/LoginController.php:38 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php:83 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:468 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:207 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php:116 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php:113 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:468 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:207 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php:313 
/project/vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:282 
/project/module/Application/test/ApplicationTest/Controller/LoginControllerTest.php:69 
/project/vendor/phpunit/phpunit/phpunit:47 
Caused by 
Zend\ServiceManager\Exception\ServiceNotCreatedException: An exception was raised while creating "Zend\Db\Adapter\Adapter"; no instance returned 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:930 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:1055 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:633 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:593 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:525 
/project/module/Application/src/Application/Model/DB.php:17 
/project/module/Application/config/module.config.php:1324 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:923 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:1057 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:633 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:593 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:525 
/project/module/Application/src/Application/Controller/LoginController.php:38 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php:83 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:468 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:207 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php:116 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php:113 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:468 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:207 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php:313 
/project/vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:282 
/project/module/Application/test/ApplicationTest/Controller/LoginControllerTest.php:69 
/project/vendor/phpunit/phpunit/phpunit:47 
Caused by 
PHPUnit_Framework_Error_Notice: Undefined index: db 
/project/vendor/zendframework/zendframework/library/Zend/Db/Adapter/AdapterServiceFactory.php:26 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:923 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:1055 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:633 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:593 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:525 
/project/module/Application/src/Application/Model/DB.php:17 
/project/module/Application/config/module.config.php:1324 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:923 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:1057 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:633 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:593 
/project/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:525 
/project/module/Application/src/Application/Controller/LoginController.php:38 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php:83 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:468 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:207 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractController.php:116 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/DispatchListener.php:113 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:468 
/project/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php:207 
/project/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php:313 
/project/vendor/zendframework/zendframework/library/Zend/Test/PHPUnit/Controller/AbstractControllerTestCase.php:282 
/project/module/Application/test/ApplicationTest/Controller/LoginControllerTest.php:69 
/project/vendor/phpunit/phpunit/phpunit:47 

Вопросы, которые я прежде всего, как пройти тест с этим кодом? Я знаю, что обычно вы выполняете тест и после этого код, но мне нужна начальная точка, чтобы понять беспорядок, который у меня есть в приложении. Во-вторых, какой простой или лучший способ изменить «модели», чтобы не быть зависимостью для каждого метода, а затем пройти тест? Как изменить устаревший DbTableAuthAdapter, чтобы не тормозить все? Как я уже сказал, я новичок в ZF2 и Phpunit, и я застрял над этим грязным кодом, и у меня есть лучшие практики в моем сознании, но я не знаю, как привести их в действие в этом коде. Спасибо за всю информацию, которую я получу за это.

СПУСТЯ EDIT решение добавить эту строку в тестовом Еогеасп модели:

// access via application object.. 
    $bla = $this->getApplication()->getServiceManager()->get('Tests'); 
+1

Примечание - на SO, вы можете ответить на свой вопрос, а затем пометить его как принятый. Если вы исправили свою собственную проблему, это на 100% приемлемо. –

ответ

1

решение добавить эту строку в тестовом Еогеасп модели:

$ бла = $ this-> getApplication() -> getServiceManager() -> получить ('тесты');

Спасибо i336_ :)

 Смежные вопросы

  • Нет связанных вопросов^_^