Ich habe versucht, ein Modell in einem Symfony2-Projekt zu testen, aber ich weiß nicht, wie man den Entity-Manager zum Speichern und Abrufen von Datensätzen zu erhalten.
Kann mir jemand einen Hinweis auf die richtigen Dokumente dafür geben?
Ich habe versucht, ein Modell in einem Symfony2-Projekt zu testen, aber ich weiß nicht, wie man den Entity-Manager zum Speichern und Abrufen von Datensätzen zu erhalten.
Kann mir jemand einen Hinweis auf die richtigen Dokumente dafür geben?
Um Ihre Modelle zu testen, können Sie die Methode setUp() verwenden. Link zu Dokumenten
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class MyModelTest extends WebTestCase
{
/**
* @var EntityManager
*/
private $_em;
protected function setUp()
{
$kernel = static::createKernel();
$kernel->boot();
$this->_em = $kernel->getContainer()->get('doctrine.orm.entity_manager');
$this->_em->beginTransaction();
}
/**
* Rollback changes.
*/
public function tearDown()
{
$this->_em->rollback();
}
public function testSomething()
{
$user = $this->_em->getRepository('MyAppMyBundle:MyModel')->find(1);
}
Ich hoffe, das hilft Ihnen
Von Symfony2-Modellen wird erwartet, dass sie Domänenobjekte sind, die Folgendes darstellen Domänenmodelle im Code.
Domänenobjekte sollten de Verhalten des entsprechenden Domänenkonzepts zu implementieren, anstatt durch die Anforderungen eines spezifischeren technologischen Rahmens. -- Domänenorientiertes Design - Wikipedia, die freie Enzyklopädie
Domänenobjekte (und ihre Tests) sollten nicht von Symfony2-APIs und Doctrine-APIs abhängen, es sei denn, Sie wollen sie wirklich testen.
Das Schreiben von Symfony2-Unit-Tests ist nicht anders als das Schreiben von Standard-PHPUnit-Unit-Tests. -- Symfony - Testen
Sie können Geschäftslogik (Prozesse, Regeln, Verhaltensweisen usw.), die in Domänenobjekten dargestellt ist, mit PHPUnit (oder Behat) testen und normalerweise Prüfdoppel .
namespace Ibw\JobeetBundle\Tests\Repository;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Output\NullOutput;
use Symfony\Component\Console\Input\ArrayInput;
use Doctrine\Bundle\DoctrineBundle\Command\DropDatabaseDoctrineCommand;
use Doctrine\Bundle\DoctrineBundle\Command\CreateDatabaseDoctrineCommand;
use Doctrine\Bundle\DoctrineBundle\Command\Proxy\CreateSchemaDoctrineCommand;
class CategoryRepositoryTest extends WebTestCase
{
private $em;
private $application;
public function setUp()
{
static::$kernel = static::createKernel();
static::$kernel->boot();
$this->application = new Application(static::$kernel);
// drop the database
$command = new DropDatabaseDoctrineCommand();
$this->application->add($command);
$input = new ArrayInput(array(
'command' => 'doctrine:database:drop',
'--force' => true
));
$command->run($input, new NullOutput());
// we have to close the connection after dropping the database so we don't get "No database selected" error
$connection = $this->application->getKernel()->getContainer()->get('doctrine')->getConnection();
if ($connection->isConnected()) {
$connection->close();
}
// create the database
$command = new CreateDatabaseDoctrineCommand();
$this->application->add($command);
$input = new ArrayInput(array(
'command' => 'doctrine:database:create',
));
$command->run($input, new NullOutput());
// create schema
$command = new CreateSchemaDoctrineCommand();
$this->application->add($command);
$input = new ArrayInput(array(
'command' => 'doctrine:schema:create',
));
$command->run($input, new NullOutput());
// get the Entity Manager
$this->em = static::$kernel->getContainer()
->get('doctrine')
->getManager();
// load fixtures
$client = static::createClient();
$loader = new \Symfony\Bridge\Doctrine\DataFixtures\ContainerAwareLoader($client->getContainer());
$loader->loadFromDirectory(static::$kernel->locateResource('@IbwJobeetBundle/DataFixtures/ORM'));
$purger = new \Doctrine\Common\DataFixtures\Purger\ORMPurger($this->em);
$executor = new \Doctrine\Common\DataFixtures\Executor\ORMExecutor($this->em, $purger);
$executor->execute($loader->getFixtures());
}
public function testFunction()
{
// here you test save any object or test insert any object
}
protected function tearDown()
{
parent::tearDown();
$this->em->close();
}
}
wie in diesem Link: Jobeet Unit Test Tutorial erklären, wie man Entitäten und Entitäten-Repository testet
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.