Předání závislostí do preseteru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ripper
Člen | 56
+
0
-

Dobrý den,

začal jsem s testováním a narazil jsem na jednu věc se kterou si nevím rady. Mám následující test –

function testSomething()
	{
		$presenterFactory = $this->container->getByType('Nette\Application\IPresenterFactory');
		$presenter = $presenterFactory->createPresenter('Admin:Uzivatel');
	}

Používám ale všeljaká rozšíření a křičí to následující –

Exited with error code 255 (expected 0)
Kdyby\Doctrine\DBALException: could not find driver

in Kdyby\Doctrine\Connection.php(243)
in Kdyby\Doctrine\Connection.php(77) Kdyby\Doctrine\Connection->resolveException()
in ORM\Persisters\BasicEntityPersister.php(930) Kdyby\Doctrine\Connection->executeQuery()
in Doctrine\ORM\EntityRepository.php(181) Doctrine\ORM\Persisters\BasicEntityPersister->loadAll()
in Doctrine\ORM\EntityRepository.php(164) Doctrine\ORM\EntityRepository->findBy()
in Application\Security\BaseAuthorizator.php(42) Doctrine\ORM\EntityRepository->findAll()
in cache\_Nette.Configurator\_-4ffb175b0ab714d1f5cd3cb7394d49c4.php(321) Scribe\Security\BaseAuthorizator->__construct()
in [internal function]SystemContainer->createService__96_Scribe_Security_BaseAuthorizator()
in Nette\DI\Container.php(145) call_user_func_array()
in Nette\DI\Container.php(94) Nette\DI\Container->createService()
in cache\_Nette.Configurator\_-4ffb175b0ab714d1f5cd3cb7394d49c4.php(1437) Nette\DI\Container->getService()
in [internal function]SystemContainer->createServiceUser()
in Nette\DI\Container.php(145) call_user_func_array()
in Nette\DI\Container.php(94) Nette\DI\Container->createService()
in Nette\DI\Container.php(177) Nette\DI\Container->getService()
in Nette\DI\Helpers.php(102) Nette\DI\Container->getByType()
in Nette\DI\Container.php(264) Nette\DI\Helpers::autowireArguments()
in Nette\DI\Container.php(244) Nette\DI\Container->callMethod()
in Nette\Application\PresenterFactory.php(61) Nette\DI\Container->callInjects()
in framework.dev\tests\ExampleTest.phpt(31) Nette\Application\PresenterFactory->createPresenter()
in [internal function]Test\ExampleTest->testSomething()
in Tester\Framework\TestCase.php(109) call_user_func_array()
in Tester\Framework\TestCase.php(91) Tester\TestCase->runTest()
in Tester\Framework\TestCase.php(39) Tester\TestCase->runMethod()
in framework.dev\tests\ExampleTest.phpt(37) Tester\TestCase->run()

(previous) PDOException: could not find driver

Mohl by někdo poradit? Díky.

David Matějka
Moderator | 6445
+
0
-

bude to asi tim, ze nette/tester implicitne nepouziva zadny konfiguracni soubor php. Muzes to specifikovat pomoci parameteru -c, treba

./run-tests.sh -c /etc/php5/cli/php.ini

Editoval matej21 (20. 3. 2014 18:56)

Ripper
Člen | 56
+
0
-

Paráda, děkuju, přes tohle jsem se už dostal a ještě potřebuji pravděpodobně změnit nějakým způsobem cestu k souborům, protože to směřuje místo do app/ do tests/ –

Nette\Application\UI\InvalidLinkException: Cannot load presenter 'Uzivatel', class 'App\Presenters\UzivatelPresenter' was not found in 'M:\==PROJEKTY==\framework.dev\tests/presenters/UzivatelPresenter.php'.

in Application\UI\Presenter.php(844)
in Application\UI\PresenterComponent.php(343) Nette\Application\UI\Presenter->createRequest()
in AdminModule\presenters\BasePresenter.php(46) Nette\Application\UI\PresenterComponent->redirect()
in Application\UI\Presenter.php(181) App\AdminModule\Presenters\BasePresenter->startup()
in framework.dev\tests\ExampleTest.phpt(37) Nette\Application\UI\Presenter->run()
in [internal function]Test\ExampleTest->testSomething()
in Tester\Framework\TestCase.php(109) call_user_func_array()
in Tester\Framework\TestCase.php(91) Tester\TestCase->runTest()
in Tester\Framework\TestCase.php(39) Tester\TestCase->runMethod()
in framework.dev\tests\ExampleTest.phpt(43) Tester\TestCase->run()

(previous) Nette\Application\InvalidPresenterException: Cannot load presenter 'Uzivatel', class 'App\Presenters\UzivatelPresenter' was not found in 'M:\==PROJEKTY==\framework.dev\tests/presenters/UzivatelPresenter.php'.
David Matějka
Moderator | 6445
+
0
-

registruj si ve svem bootstrap.php pro testy robotloader pro app slozku

Ripper
Člen | 56
+
0
-

To mám –

$configurator->createRobotLoader()
	->addDirectory(__DIR__ . '/../app/')
	->register();
jiri.pudil
Nette Blogger | 1029
+
0
-

Problém bude v tom, že Configurator při sestavování containeru do parametru appDir (který následně využívá PresenterFactory) dosazuje složku skriptu, ze kterého je volaný. Tzn. bootstrap musí být v app/

Ripper
Člen | 56
+
0
-

@jiri.pudil: No tak to by mi nedošlo. Super, děkuji ti! :)