2017-12-28 87 views
0

ajaxで動的に変更されるフィールドを持つページを生成するコントローラをテストします。ここでphpunit/symfonyでのAJAX呼び出しのテスト(クライアントまたはクローラを使用)

は、Ajaxのコードです:

<script> 
    var $groupeCompetence = $('#requete_prestataire_groupeCompetence'); 
// When sport gets selected ... 
$groupeCompetence.change(function() { 
    // ... retrieve the corresponding form. 
    var $form = $(this).closest('form'); 
    // Simulate form data, but only include the selected sport value. 
    var data = {}; 
    data[$groupeCompetence.attr('name')] = $groupeCompetence.val(); 
    // Submit data via AJAX to the form's action path. 
    $.ajax({ 
    url : $form.attr('action'), 
    type: $form.attr('method'), 
    data : data, 
    success: function(html) { 
     // Replace current position field ... 
     $('#requete_prestataire_competence').replaceWith(
     // ... with the returned one from the AJAX response. 
     $(html).find('#requete_prestataire_competence') 
     ); 
     // Position field now displays the appropriate positions. 
    } 
    }); 
}); 
</script> 

どのように私は、クライアントまたはクローラーを使ってPHPUnitのからこのコードを呼び出すことができますか?

私が試した:

$this->client->request(
       'POST', 
       '/', 
       array('requete_prestataire[groupeCompetence]' =>2), 
       array(), 
       array(), 
       array('HTTP_X-Requested-With' => 'XMLHttpRequest', 
        )); 

をしかし、それは動作しません。

ありがとうございます!

+0

あなたがリクエストしようとしました、何が返されましたか?応答を調べるには 'var_dump($ this-> client-> getResponse() - > getContent())'を呼び出します。 –

答えて

0

私は解決策を見つけた:

あなたが検証を無効にし、それが生成されたとして、フォームを送信する必要があります。ここに

$crawler = $this->client->request('GET', '/'); 

     $form = $crawler->selectButton('requete_prestataire_Rechercher')->form(); 
     $form['requete_prestataire[groupeCompetence]'] = 2; 
     $form['requete_prestataire[competence]']->disableValidation()->select(50); 

     $crawler = $this->client->submit($form); 

は、docで説明です:

doc symfony dom crawler component

関連する問題