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
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.
- jiri.pudil
- Nette Blogger | 1029
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',
]);