【问题标题】:Error Unit test symfony错误单元测试 symfony
【发布时间】:2017-02-09 15:17:03
【问题描述】:

当我尝试执行这个单元测试时 我有个问题 所以这是我的函数 testErrors
.

    public function testErrors(){

    $client = static::createClient();

    $crawler = $client->request('GET', '/add');
    $form = $crawler->selectButton('save')->form(array(
    'user[firstName]'      => 'test1',
    'user[lastName]'       => 'test',
    'user[email]'          => 'test@gmail.com',
    ));
    $crawler = $client->submit($form);

    //  3 errors
    $this->assertTrue($crawler->filter('.error_list')->count() == 3);
    // Error firstName field
    $this->assertTrue($crawler->filter('#firstName')->siblings()->first()->filter('.error_list')->count() == 1);
    // Error lasName field
    $this->assertTrue($crawler->filter('#lastName')->siblings()->first()->filter('.error_list')->count() == 1);
    // Error email field
    $this->assertTrue($crawler->filter('#email')->siblings()->first()->filter('.error_list')->count() == 1);

}

我有这个问题

InvalidArgumentException: 当前节点列表为空。

这是我的控制器

   /**
 * @Route("/add", name="addPage")
 */
public function AddAction(Request $request)
{

    $user = new User();

    $form = $this->createFormBuilder($user)
        ->add('email', TextType::class)
        ->add('firstName', TextType::class)
        ->add('lastName', TextType::class)
        ->add('save', SubmitType::class, array('label' => 'Add'))
        ->getForm();


    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {


    $firstName = $form['firstName']->getData();
    $lastName = $form['lastName']->getData();
    $email = $form['email']->getData();
    $user->setFirstName($firstName);
    $user->setLastName($lastName);
    $user->setEmail($email);
    $em = $this->getDoctrine()->getManager();
    $em->persist($user);
    $em->flush();
    $this->addFlash('notice','user added' );
    return $this->redirectToRoute('listPage');
    }

【问题讨论】:

  • 哪个语句/行给出了这个错误?
  • 以及为什么您希望表单在没有任何约束时会出现 3 个验证错误?
  • 这一行错误 "" )); "" 所以在这个语句中 $form = $crawler->selectButton('save')->form(array( 'user[firstName]' => 'test1', 'user[lastName]' => 'test', '用户[电子邮件]' => 'test@gmail.com', ));
  • 我会为字段添加约束
  • 在访问爬虫之前,检查请求在client->request之后使用$this->assertTrue($client->getResponse()->isSuccessful());之类的东西是否正常

标签: unit-testing phpunit symfony


【解决方案1】:

我认为是您的selectButton('save') 给您带来了错误。尝试使用您的按钮标签 Add 而不是 save

【讨论】:

  • 在哪一行?让我们尝试将语句分开以跟踪您的错误,如下所示:``` $button = $crawler->selectButton('Add'); $form = $button->form(); $form->get('form[firstName]')->setValue('test1'); $form->get('form[lastName]')->setValue('test'); $form->get('form[email]')->setValue('test@gmail.com'); ``` 另外我使用 'form' 作为字段名选择器,因为对我来说这就是呈现表单的方式。
猜你喜欢
  • 2019-06-04
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
相关资源
最近更新 更多