2012-09-05 8 views
6
// src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php 
namespace Acme\DemoBundle\Tests\Controller; 

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class DemoControllerTest extends WebTestCase 
{ 
    public function testIndex() 
    { 
     $client = static::createClient(); 

     $crawler = $client->request('GET', '/demo/hello/Fabien'); 

     $this->assertGreaterThan(0, $crawler->filter('html:contains("Hello Fabien")')->count()); 
    } 
} 

यह मेरे परीक्षणों में ठीक काम करता है, लेकिन मैं इस क्रॉलर को नियंत्रक में भी उपयोग करना चाहता हूं। मैं यह कैसे कर सकता हूं?नियंत्रक में क्रॉलर का उपयोग करें

मैं मार्ग बनाने के लिए, और नियंत्रक से जोड़ें:

<?php 

// src/Ens/JobeetBundle/Controller/CategoryController 

namespace Acme\DemoBundle\Controller; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Acme\DemoBundle\Entity\Category; 
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class CategoryController extends Controller 
{ 
    public function testAction() 
    { 
    $client = WebTestCase::createClient(); 

    $crawler = $client->request('GET', '/category/index'); 
    } 

} 

लेकिन यह मुझे त्रुटि:

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /acme/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php on line 24 

उत्तर

4

WebTestCase वर्ग एक विशेष वर्ग के लिए एक परीक्षण ढांचे (PHPUnit) के भीतर चलाने के लिए डिज़ाइन किया गया है कि है और आप इसे अपने नियंत्रक में उपयोग नहीं कर सकते हैं।

लेकिन आप इस तरह से एक HTTPKernel ग्राहक बना सकते हैं:

use Symfony\Component\HttpKernel\Client; 

... 

public function testAction() 
{ 
    $client = new Client($this->get('kernel')); 
    $crawler = $client->request('GET', '/category/index'); 
} 

ध्यान दें कि आप केवल अपनी सिम्फोनी आवेदन ब्राउज़ करने के लिए इस क्लाइंट का उपयोग करने में सक्षम हो जाएगा। यदि आप बाहरी सर्वर ब्राउज़ करना चाहते हैं तो आपको goutte जैसे किसी अन्य क्लाइंट का उपयोग करने की आवश्यकता होगी।

क्रॉलर यहां बनाए गए एक ही क्रॉलर WebTestCase द्वारा दिया ताकि आप आप अधिक जानकारी की जरूरत है एक ही उदाहरण सिम्फोनी testing documentation

में विस्तृत पालन कर सकते हैं है, here क्रॉलर घटक के लिए दस्तावेज़ और here वर्ग है संदर्भ

+0

धन्यवाद, लेकिन इसके लिए दस्तावेज़ीकरण कहां है? उदाहरण के लिए मैं कक्षा के साथ DIV या अवधि कैसे प्राप्त कर सकता हूं? –

+1

मैंने अधिक जानकारी के साथ अपना उत्तर अपडेट किया –

+0

बहुत, बहुत धन्यवाद :) –

1

आप prod वातावरण में WebTestCase उपयोग नहीं करना चाहिए, क्योंकि WebTestCase::createClient() परीक्षण ग्राहक बनाता है।

अपने नियंत्रक में आप (मैं आप की सिफारिश Buzz\Browser उपयोग करने के लिए) कुछ इस तरह करना चाहिए:

use Symfony\Component\DomCrawler\Crawler; 
use Buzz\Browser; 

... 
$browser = new Browser(); 
$crawler = new Crawler(); 

$response = $browser->get('/category/index'); 
$content = $response->getContent(); 
$crawler->addContent($content); 
+0

धन्यवाद, +1। इस ब्राउज़र के लिए दस्तावेज कहां है? मैं डोम एचटीएमएल आदि कैसे प्राप्त कर सकता हूं? –

संबंधित मुद्दे