我正在尝试为集成在我们的 Web 应用程序中的简单博客编写一些 WebTestCases。
其中一个测试用例如下所示:
public function testNewSubmitAction()
{
//load necessary data & login as admin
$fixtureRepo = $this->loadFixtures([LoadUserData::class])->getReferenceRepository();
$this->loadFixtures([LoadBlogData::class], null, 'doctrine_phpcr');
$this->loginAs($customer = $fixtureRepo->getReference(LoadUserData::ADMIN_ACCOUNT), $this->getContainer()->getParameter('firewall.name'));
$client = static::makeClient();
$crawler = $client->request("GET", "/content/blog/new");
$form = $crawler->selectButton('Erstellen')->form();
$client->submit($form, [
'blog[title]' => 'Testblog',
]);
$this->assertTrue($client->getResponse()->isRedirect());
}
LoadBlogData 类有一个包含以下内容的加载方法:
public function load(ObjectManager $manager)
{
parent::init($manager);
NodeHelper::createPath($this->session, '/cms/routes/blog/de');
NodeHelper::createPath($this->session, '/cms/routes/blog/fr');
NodeHelper::createPath($this->session, '/cms/routes/blog/it');
NodeHelper::createPath($this->session, '/cms/routes/categories/de');
NodeHelper::createPath($this->session, '/cms/routes/categories/fr');
NodeHelper::createPath($this->session, '/cms/routes/categories/it');
NodeHelper::createPath($this->session, '/cms/pages/blog');
NodeHelper::createPath($this->session, '/cms/content/blog');
NodeHelper::createPath($this->session, '/cms/categories');
$this->createBlog($manager);
$manager->flush();
}
createBlog 方法应该创建一个博客条目。
private function createBlog(ObjectManager $manager)
{
$blog = new Blog();
$blog->setTitle('Test');
$blog->setName('test');
$blog->setCreatedAt(new \DateTime);
$blog->setUpdatedAt(new \DateTime);
$blog->setCreatedBy('Tester');
$blog->setParentDocument($manager->find(null, '/cms/pages/blog'));
$manager->persist($blog);
}
这就是失败的地方。运行测试时,我收到错误消息“首先注册 phpcr:托管节点类型。”。
你知道如何解决这个问题吗?
我知道我必须先初始化 PHPCR。这可以在加载夹具时完成吗?
编辑:我还尝试使用自定义初始化程序加载此数据。但我得到同样的错误。