我正在为 symfony2 项目编写单元测试。例如,我想测试一些需要 Doctrine\ORM\EntityManger inctance 的类:
// Class for testing
// ...
class CategoryManager
{
public function __construct( EntityManager $em )
{
// ...
所以,我需要在我的单元测试中创建 Doctrine\ORM\EntityManager 实例并将其传递给构造函数,如下所示:
// Testing
// ...
$category1 = new Category();
$category2 = new Category();
$categories = array( $category1, $category2 );
$query = $this->getMock( '\Application\BackendBundle\Tests\Mocks\Doctrine\ORM\Query', array(), array(), '', false );
$query->expects( $this->any() )
->method( 'getResult' )
->will( $this->returnValue( $categories ) );
$em = $this->getMock( 'Doctrine\ORM\EntityManger', array(), array(), '', false );
$em->expects( $this->any() )
->method( 'createQuery' )
->will( $this->returnValue( $query ) );
// ...
请让我建议如何改进和自动化 entity_manager 模拟创建。我不确定这是创建模拟的正确方法(创建这个庞大的模拟对我来说似乎不方便)。我会很高兴任何建议。