Tester, Kdyby/Doctrine a provázání repository a entit

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

Mám výchozí ukázkový test, jak je dodán se sandboxem. Když ho spustím, vyhodí mi to následující výjimku:

-- FAILED: model\entity\ExampleTest.phpt
   Exited with error code 255 (expected 0)
   Nette\Utils\AssertionException: Repository class App\Model\Entity\TagRepository have been found in DIC, but no entity has it assigned and it has no entity configured

   in Doctrine\DI\OrmExtension.php(812)
   in Doctrine\DI\OrmExtension.php(781) Kdyby\Doctrine\DI\OrmExtension->processRepositoryFactoryEntities()
   in src\DI\Compiler.php(223) Kdyby\Doctrine\DI\OrmExtension->afterCompile()
   in src\DI\Compiler.php(139) Nette\DI\Compiler->generateCode()
   in src\Bootstrap\Configurator.php(264) Nette\DI\Compiler->compile()
   in [internal function]Nette\Configurator->generateContainer()
   in src\DI\ContainerLoader.php(111) call_user_func_array()
   in src\DI\ContainerLoader.php(76) Nette\DI\ContainerLoader->generate()
   in src\DI\ContainerLoader.php(41) Nette\DI\ContainerLoader->loadFile()
   in src\Bootstrap\Configurator.php(218) Nette\DI\ContainerLoader->load()
   in POI\tests\bootstrap.php(16) Nette\Configurator->createContainer()
   in model\entity\ExampleTest.phpt(9) require()


FAILURES! (1 test, 1 failure, 0.5 seconds)

Když aplikaci spustím normálně, žádnou chybu nevypíše. V každé entitě mám přiřazený nějaký Repository pomocí anotace, například takto:

namespace App\Model\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * Tag entity
 *
 * Class CompoundTag
 * @ORM\Entity(repositoryClass="TagRepository")
 */
class Tag
{

Konfiguraci mám následující (config.neon):

services:
    tagRepository: App\Model\Entity\TagRepository

doctrine:
    driver: pdo_sqlite
    path: %appDir%/model/database.db
    memory: false
    metadata:
            App: %appDir%

Nedochází mi něco? Předem díky za pomoc.

Hurass
Člen | 114
+
0
-

Mám stejný problém, vyřešil jsi to nějak?

jiri.pudil
Nette Blogger | 1029
+
+2
-

Díky bugu (nebo spíš known issue) v Nette se špatně detekuje %appDir%, nejspíš ti ukazuje do složky s testy. Zkus ten parametr podstrčit v bootstrapu pro testy explicitně:

$configurator->addParameters([
	'appDir' => __DIR__ . '/../app',
]);
Hurass
Člen | 114
+
0
-

Funguje, díky!