Silex&;phpunitjson响应

Silex&;phpunitjson响应,json,phpunit,silex,Json,Phpunit,Silex,我正在尝试使用phpunit为Silex编写一些测试 我有一个类Symfony\Component\BrowserKit\Client,它生成一个爬虫对象 这个对象期望客户端的结果是xhtml,但是我尝试测试的api返回JSON,爬虫程序不允许这样做 Silex或phpunit中是否有一个内置类可以与JSON一起使用,或者我必须使用自己的类 干杯处理json没有什么特别的,但是您可以使用客户端而不使用爬虫。只需在客户端上调用getResponse(),即可获得响应,如下所示: $client =

我正在尝试使用phpunit为Silex编写一些测试

我有一个类Symfony\Component\BrowserKit\Client,它生成一个爬虫对象

这个对象期望客户端的结果是xhtml,但是我尝试测试的api返回JSON,爬虫程序不允许这样做

Silex或phpunit中是否有一个内置类可以与JSON一起使用,或者我必须使用自己的类


干杯

处理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]);

我建议您将此逻辑移到测试用例上的帮助器方法中,并使用它。

要在Symfony 2浏览器套件中发送JSON请求,请使用
HTTP\u ACCEPT
而不是
ACCEPT
HTTP\u CONTENT\u TYPE
而不是
CONTENT\u TYPE
。下面是一个使用一些
$data
发送
POST
请求的示例:

$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);