2012-09-18 24 views
5

मैं phpunit का उपयोग कर सिलेक्स के लिए कुछ परीक्षण लिखने की कोशिश कर रहा हूं।सिलेक्स और phpunit JSON प्रतिक्रिया

मेरे पास एक क्लास सिम्फनी \ घटक \ ब्राउज़रकिट \ क्लाइंट है जो क्रॉलर ऑब्जेक्ट उत्पन्न करता है।

यह ऑब्जेक्ट क्लाइंट के परिणामों को xhtml होने की अपेक्षा करता है हालांकि मेरा एपीआई कि मैं जेएसओएन और क्रॉलर रिटर्न का परीक्षण करने की कोशिश कर रहा हूं, इसकी अनुमति नहीं है।

क्या साइलेक्स या phpunit में कक्षा में निर्मित है जो JSON के साथ काम करेगा या मुझे अपना खुद का रोल करना होगा?

चीयर्स

उत्तर

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

मैं सुझाव है कि आप परीक्षण मामले पर एक सहायक विधि में इस तर्क के लिए कदम और उस का उपयोग करें।

+0

शानदार, बहुत बहुत धन्यवाद –

0
Symfony 2 ब्राउज़र-किट उपयोग HTTP_ACCEPT बजाय ACCEPT और CONTENT_TYPE के बजाय HTTP_CONTENT_TYPE में एक JSON अनुरोध भेजने के लिए

। यहाँ कुछ $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); 
संबंधित मुद्दे