2017-02-09 4 views
2

Когда я пытаюсь выполнить этот модульный тест У меня проблема , так что это моя функция testErrors
.Error Unit test symfony

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]'   => '[email protected]', 
    )); 
    $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'); 
    } 
+0

какой оператор/строка дает эту ошибку? – Matteo

+0

и почему вы ожидаете, что форма получит 3 ошибки проверки, если у вас нет ограничений? – Matteo

+0

Ошибка в этой строке "")); "" поэтому в этом выражении $ form = $ crawler-> selectButton ('save') -> form (array ( 'user [firstName]' => 'test1', 'user [lastName]' => 'test' , 'пользователь [email]' => '[email protected]', )); –

ответ

1

Я думаю, что это ваш selectButton('save'), что дает ошибку. Попробуйте его с помощью ярлыка на кнопке Add вместо save

+0

такая же проблема –

+0

На какой строке? Давайте попробуем разделить операторы, чтобы отследить вашу ошибку примерно так: '' ' $ button = $ crawler-> selectButton ('Добавить'); $ form = $ button-> form(); $ form-> get ('form [firstName]') -> setValue ('test1'); $ form-> get ('form [lastName]') -> setValue ('test'); $ form-> get ('form [email]') -> setValue ('[email protected] '); '' ' Кроме того, я использую« форму »в качестве селектора полей, потому что для меня именно так это визуализация формы. – jkrnak