控制器单元测试symfony2

时间:2015-09-18 05:53:13

标签: symfony phpunit

我是单元测试用例的新手,我有一个功能

 /**
 * 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

1 个答案:

答案 0 :(得分:0)

也许尝试将Controller实例化为部分模拟。这将允许您“覆盖”某些功能,在本例中为

  • createCreateForm
  • 重定向
  • getDoctrine
  • generateUrl

您可以覆盖这些方法并让它们返回模拟版本或测试控制的对象。在重定向的情况下,您可以给出方法期望。

$controller = $this->getMock( 'MyController', array( 'createCreateForm', 'redirect', 'getDoctrine', 'generateUrl' ) );