【发布时间】:2015-09-21 17:25:34
【问题描述】:
我是单元测试用例的新手,我只有一个功能
/**
* Creates a new Blog entity.
*
* @Route("/", name="blog_create")
* @Method("POST")
* @Template("AppBundle:Blog:new.html.twig")
*/
public function createAction(Request $request)
{
$entity = new Blog();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('blog_show', array('id' => $entity->getId())));
}
return array(
'entity' => $entity,
'form' => $form->createView(),
);
} // End of method
在数据库中创建条目。问题是我无法编写测试用例来验证表单提交的输入,即使我尝试创建控制器的对象并将实体传递给该对象。我不知道如何在测试用例中创建控制器对象并且 如何验证输入表单和视图,有什么想法吗? I'm looking for a solution like this.
【问题讨论】:
-
也许只是对您的验证进行单元测试。
-
你看过那篇文章开头的评论了吗?对控制器进行单元测试没有意义。尝试功能测试symfony.com/doc/current/book/testing.html#forms
-
恕我直言,我不认为单元测试控制器是不合适的。功能测试很重要,但它们对于测试一整套边界条件并不那么好,功能测试最适合测试一个“快乐”路径和一个“不快乐”路径,有效地测试层之间的“胶水”是否有效.现在确实控制器应该尽可能瘦,所以不应该有太多的逻辑,但总有一些,如问题中所见。显然有赞成和反对的论据,但我认为直截了当的“不要这样做”并没有多大帮助。