我尝试在我的 DefaultControllerTest 中添加此代码
$load = new Loader();
$load->load('src/AppBundle/DataFixtures/ORM/product.yml');
这是我的控制器的完整代码
<?php
namespace TestsAppBundleController;
use NelmioAliceFixturesLoader;
use SymfonyBundleFrameworkBundleTestWebTestCase;
class DefaultControllerTest extends WebTestCase
{
public function testIndex()
{
$load = new Loader();
$load->load('src/AppBundle/DataFixtures/ORM/product.yml');
$client = static::createClient();
$crawler = $client->request('GET', '/');
$this->assertEquals(200, $client->getResponse()->getStatusCode());
$this->assertContains('Welcome to Symfony', $crawler->filter('#container h1')->text());
}
}
如果我运行phpunit。它有效,未发现错误。它成功测试,但这里的问题是 product.yml 没有在我的数据库中插入任何数据。但是如果我运行这个命令箱/控制台hautelook_alice:doctrine:fixtures:load --append。这将起作用。它插入数据。在测试控制器之前,如何加载数据夹具?我尝试更多地研究它。但是我现在不知道如何添加它。
您可以简单地使用 bash 脚本。像这样的东西(适应您的需求(:
#!/bin/bash
echo "# Refresh data model and load fixtures"
php bin/console doctrine:database:create --if-not-exists --env=dev
php bin/console doctrine:schema:drop --force --env=dev
php bin/console doctrine:schema:create --env=dev
php bin/console doctrine:schema:validate --env=dev
php bin/console hautelook_alice:doctrine:fixtures:load --append --env=dev
echo -e " --> DONEn"
然后你可以启动将使用此新数据库的phpunit。或者你可以在这个脚本中添加 phpunit 调用:
./bin/simple-phpunit --debug --verbose