回答
爲了測試你的模型,你可以使用setUp()方法。 link to docs
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);
}
希望這有助於你
Symfony2模型預計是代表domain models代碼中的域對象。
域對象應該單純定義爲實現相應的域概念的商業 行爲,而不是通過更具體的技術框架的要求來定義 。 - Domain-driven design - Wikipedia, the free encyclopedia
域對象(和它的測試)不應該依賴於Symfony2的API和學說的API,除非你真的想考驗一下自己。
寫Symfony2單元測試與編寫標準PHPUnit單元測試沒有區別。 - Symfony - Testing
可以測試業務邏輯域對象使用PHPUnit(或貝哈特)表示的(流程,規則,行爲等),並且通常test doubles。
是的,我已經閱讀文檔,並瞭解這些概念。但是,如果我想測試,例如,可扼要行爲,它只在記錄保存後才起作用。我如何測試?不要說該軟件包可能已經過測試,我只想看看如何測試symfony2中的東西 – nerohc
瞭解產品的核心問題對我們非常重要。 如果你正在開發可溶性行爲,那麼對你來說最重要的是slug字符串是基於可滯留字段的值正確生成的,所以你應該對它進行測試。當然,您可以測試slug字段的值是否正確存儲到數據庫中,但它不是該產品的核心問題,並且它是Doctrine本身的核心關注點(並且已經過測試)。 – iteman
是的,但子彈創建後,所以爲了測試生成的字符串是否正常,我*需要*保存對象,而不是測試保存本身(這當然是由教條團隊測試),但檢查生成的字符串,這是系統關心的問題。 – nerohc
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();
}
}
就像這個鏈接:Jobeet Unit Test Tutorial 解釋如何測試實體和實體庫
雖然這可能在理論上回答這個問題,[這將是更可取的](http: //meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供參考鏈接。 –
- 1. 測試Multipart PUT phpUnit和Symfony2
- 2. 如何使用PHPUnit測試
- 3. PHPUnit控制器symfony2測試用例
- 4. PHPUnit測試模具
- 5. 使用PHPUnit測試REST API使用PHPUnit
- 6. 如何用phpunit測試symfony2嵌入式控制器?
- 7. Symfony2:PHPUnit測試 - > @dataProvider不發送multipleArray
- 8. PHPUnit 3.7.19和Symfony2破解測試
- 9. symfony2 phpunit - 功能測試錯誤(host_with_path)
- 10. Symfony2的PHPUnit的測試認證
- 11. 如何使用phpunit測試用例測試ajax調用?
- 12. 用phpunit測試
- 13. 如何在symfony2中使用phpUnit進行測試時回滾任何事務
- 14. 如何使用PHPUnit跨多個mysql模式進行測試?
- 15. 我如何使用PHPUnit測試Joomla 1.5或1.6模塊?
- 16. 如何使用PHPUnit測試和模擬zend框架控制器?
- 17. 如何在laravel中使用phpunit測試特定測試類
- 18. 如何使用PHPUnit在Symfony2中設置數據庫繁重的單元測試?
- 19. 如何記錄PHPUnit測試
- 20. 如何在PHPUnit的測試
- 21. 如何用phpunit測試內部數組
- 22. PHPUnit - 如何測試回調被調用?
- 23. Zend PHPUnit測試模型,斷言Zend_Exception確實發生如預期
- 24. 使用Symfony2 + PHPUnit的問題
- 25. 如何測試模型has_secure_password?
- 26. 如何測試mptt模型?
- 27. 如何測試EF模型
- 28. CakePHP PHPUnit測試
- 29. 使用PHPUnit模擬對象使用get_class的測試代碼
- 30. PHPUnit測試用例意識到symfony2依賴注入容器
這對我有用。謝謝。 –
這裏是一個鏈接到文檔@ symfony.com - http://symfony.com/doc/current/cookbook/testing/doctrine.html –