Php KNP菜单包赢得';t在功能测试的控制器中运行时访问实体
这件事真让我难堪 我试图在我的应用程序上运行功能测试,但是遇到了KNP菜单包的问题,我不完全确定我到底出了什么问题 我有一些实体被条令装置加载,我知道它们在那里——测试套件的其他部分在找到它们并断言它们是我想要的东西方面没有问题 在我的Php KNP菜单包赢得';t在功能测试的控制器中运行时访问实体,php,symfony,doctrine-orm,knpmenubundle,knpmenu,Php,Symfony,Doctrine Orm,Knpmenubundle,Knpmenu,这件事真让我难堪 我试图在我的应用程序上运行功能测试,但是遇到了KNP菜单包的问题,我不完全确定我到底出了什么问题 我有一些实体被条令装置加载,我知道它们在那里——测试套件的其他部分在找到它们并断言它们是我想要的东西方面没有问题 在我的setUp()测试方法(扩展WebTestCase)中,我创建了一个客户机并将实体管理器注入其中,如下所示: /** * Create Client and inject services */ $this->client = static::creat
setUp()
测试方法(扩展WebTestCase
)中,我创建了一个客户机并将实体管理器注入其中,如下所示:
/**
* Create Client and inject services
*/
$this->client = static::createClient();
$this->client->getContainer()->set( 'doctrine.orm.entity_manager', $this->em );
其他测试都不存在使用该实体管理器和查找实体的问题
我将菜单用作服务,定义如下:
the_site.menu_builder:
class: TheSite\SiteBundle\Menu\MenuBuilder
arguments: [ "@knp_menu.factory", "@doctrine.orm.entity_manager" ]
the_site.menu.breadcrumb:
class: Knp\Menu\MenuItem
factory_service: the_site.menu_builder
factory_method: breadcrumbMenu
arguments: [ "@request" ]
scope: request
tags:
- { name: knp_menu.menu, alias: breadcrumb }
它似乎被以下代码卡住了:
public function breadcrumbMenu( Request $request )
{
// ......
/**
* @var $category NewsCategory
*/
$category = $this->em->getRepository( 'TheSiteSiteBundle:Category' )->findOneByCanonical( $request->get( 'category' ) );
$categories = [];
do
{
$categories[] = $category;
$category = $category->getParent();
} while( $category !== null );
// .....
}
我做了一点调查(包括一些非常复杂的变量),但似乎找不到fixture设置的任何类别。如果有帮助的话,这些实体是在一个条令事务中设置的,但是——其他的测试证明,客户机在之前找到了这些实体
$request->get('category')
产生了它应该做的事情,就我所知,这是实体管理器的问题
如果需要更多的代码,我非常乐意与大家分享
编辑:我可能会收回我说的话——现在它似乎没有在任何地方加载实体。也许数据库里还有一些什么