0


テスト用に Symfony のクローラーのフォームに「ボタン」または「入力」フィールドを追加する方法が見つかりません。私はこれをやっています:

$crawler = $this->client->request('GET', '');
$document = new \DOMDocument();
$document->loadXml('<button type="submit" name="_submit" href="#">Create</button >');
$nodeList = $document->getElementsByTagName('button');
$node = $document->getElementsByTagName('button')->item(0);
$crawler->addNode($node, $form);
var_dump($crawler->filter('button[name="_submit"]')->text()); //Return Create Logic

しかし、フォームを送信しようとすると、次のようになります:

$form = $crawler->selectButton('_submit')->form(array(
                                                'login-input' => 'XXXXXX',
                                                'pass-input'  => 'XXXXX',
                                            ));

これは私が持っている動作しません:

LogicException: 選択したノードにはフォームの祖先がありません。

JavaScriptの送信なので、ボタンや入力フィールドはありません。
誰かが何か考えがありますか?


編集
私は別の方法を見つけました:私は直接ajaxリクエストを送信し、@redbirdoと同じ効果があります.あなたの解決策は私にとってはうまくいきません.

4

1 に答える 1

1

次のようにクライアントを使用して、テストで POST リクエストをシミュレートできます。

$client->request(
    'POST',
    '/submit',
    array('name' => 'Fabien'),
    array('photo' => $photo)
);

Symfony マニュアルの「テスト」セクションの「テスト クライアントでの作業」の下に、さらに多くの例があります。

編集:

2 番目のパラメーターは、テスト対象のページの相対 URL または絶対 URL にする必要があります。ここの '/submit' は symfony の例です。

于 2013-06-05T09:20:08.273 に答える