5

phpunitを使用してSilexのテストを作成しようとしています。

クローラーオブジェクトを生成するクラスSymfony\Component \ BrowserKit\Clientがあります。

このオブジェクトは、クライアントの結果がxhtmlであることを想定していますが、テストしようとしているAPIはJSONを返し、クローラーはこれを許可しません。

JSONで動作するSilexまたはphpunitの組み込みクラスはありますか、それとも自分でロールする必要がありますか?

乾杯

4

2 に答える 2

22

jsonを扱うのに特別なことは何もありませんが、クローラーを使用せずにクライアントを使用できます。getResponse()次のように、クライアントを呼び出して応答を取得するだけです。

$client = $this->createClient();
$client->request('GET', '/');
$response = $client->getResponse();

$data = json_decode($response->getContent(), true);
$this->assertSame(array('id' => 1, 'name' => 'igorw'), $data['users'][0]);

このロジックをテストケースのヘルパーメソッドに移動して使用することをお勧めします。

于 2012-09-18T19:53:05.520 に答える
0

Symfony 2ブラウザでJSONリクエストを送信する場合-の代わりに、およびの代わりにキットをHTTP_ACCEPT使用ACCEPTHTTP_CONTENT_TYPEますCONTENT_TYPEPOSTいくつかのリクエストを送信する例を次に示し$dataます。

$client->request(
    $method = 'POST',
    $uri,
    $parameters = array(),
    $files = array(),
    $server = array(
        'HTTP_CONTENT_TYPE' => 'application/x-www-form-urlencoded; charset=UTF-8', // for sending urlencoded data
        //or 'HTTP_CONTENT_TYPE' => 'application/json', // for sending JSON data
        'HTTP_ACCEPT'       => 'application/json',      
    ),
    $content = $data,
    $changeHistory = true
);

$response = $client->getResponse();
$response_data = json_decode($response->getContent(), true);
于 2016-08-20T10:40:04.450 に答える