2017-02-09 5 views
2

このユニットテストを実行しようとすると 私は問題があります これは私の関数testErrors
です。エラーユニットテスト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を持っている:現在のノードリストは空です。

これは、私はそれはあなたにエラーを与えるもの、あなたのselectButton('save')だと思う私のコントローラ

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

の代わりにボタンラベルAddで試してください。このステートメント/ラインでこのエラーが発生しますか? – Matteo

+0

と、なぜ制約がない場合にフォームが3つの検証エラーを受け取ると予想されるのですか? – Matteo

+0

この行のエラー "")); "ユーザ名[=]" => "test1"、 'user [lastName]' => 'テスト'のように、この文では$ form = $ crawler-> selectButton( 'save') - > form(array( ' 、 'user [email]' => '[email protected]'、 )); –

答えて

1

です。 save

+0

同じ問題 –

+0

どの行ですか? エラーを追跡するためにステートメントを分離してみましょう。 '' ' $ button = $ crawler-> selectButton( 'Add'); $ form = $ button-> form(); $ form-> get( 'フォーム[firstName]') - > setValue( 'test1'); $ form-> get( 'form [lastName]') - > setValue( 'test'); $ form-> get( 'form [email]') - > setValue( '[email protected]'); '' ' また、フィールド名セレクタとして 'form'を使用しています。これは、フォームをレンダリングする方法です。 – jkrnak