Ous*_*ane 27 doctrine fixture functional-testing symfony
我的DoctrineFixturesBundle已安装,我可以通过命令行加载夹具但是,如何从功能测试中加载夹具?
小智 21
如果你使用symfony WebTestCase,实际上有一种非常简单的方法来加载你的灯具.你的夹具必须实现FixtureInterface; 因此,您可以load()直接在测试setUp()方法中调用它的方法.您只需要传递EntityManager给load()方法,该方法可以从symfony容器中获取:
public function setUp() {
$client = static::createClient();
$container = $client->getContainer();
$doctrine = $container->get('doctrine');
$entityManager = $doctrine->getManager();
$fixture = new YourFixture();
$fixture->load($entityManager);
}
Run Code Online (Sandbox Code Playgroud)
Nic*_*ich 18
您可以setUp()在此问题中看到,在测试方法中加载灯具.
您可以使用问题中的代码,但需要附加--append到doctrine:fixtures:load命令以避免fixtures-bundle的确认.
更好的解决方案是查看LiipFunctionalTestBundle,它可以更轻松地使用数据夹具.
小智 7
我只想提供一个稍微简洁的方法,如果你想首先清除你以前的测试数据表,例如,如果你在phpunit中运行你的测试.
use Doctrine\Common\DataFixtures\Purger\ORMPurger;
use Doctrine\Common\DataFixtures\Executor\ORMExecutor;
use Doctrine\Common\DataFixtures\Loader;
use Namespace\FakeBundle\DataFixtures\ORM\YourFixtures;
public function setUp()
{
static::$kernel = static::createKernel();
static::$kernel->boot();
$this->em = static::$kernel->getContainer()
->get('doctrine')
->getManager()
;
$loader = new Loader();
$loader->addFixture(new YourFixtures);
$purger = new ORMPurger($this->em);
$executor = new ORMExecutor($this->em, $purger);
$executor->execute($loader->getFixtures());
parent::setUp();
}
Run Code Online (Sandbox Code Playgroud)
这允许加载夹具(您可以将更多内容推入添加夹具方法),并在加载之前清除表格.另请注意,MongoDB使用MongoDBPurger和MongoDBExecutor具有相同的选项.希望它可以帮助某人
| 归档时间: |
|
| 查看次数: |
19932 次 |
| 最近记录: |