व्यक्तिगत सिम्फनी 2 बंडलों का परीक्षण

मैं एक छोटी पृष्ठभूमि के साथ शुरुआत करता हूँ। मुझे होटल के कमरे के लिए आरक्षण लिखने का काम था, मैं अपने सभी पसंदीदा पैकगिस्ट पर चढ़ गया, एक तैयार समाधान की तलाश में और, मेरी गहरी निराशा के लिए, कुछ भी नहीं मिला। ठीक है, हमें यह करना है - हम इसे करेंगे। कोड लिखा है, आवेदन में कार्यात्मक परीक्षणों में शामिल किया गया है। कुछ हफ़्ते के बाद, मैंने गीथब पर एक लिखित बंडल पोस्ट करने का फैसला किया। लेकिन मेरे सामने यह सवाल आया: एक अलग बंडल का परीक्षण करते समय, हमारे पास आवेदन ही नहीं है। उसने गूगल करना शुरू किया, और फिर कुछ भी सार्थक नहीं मिला। सामान्य तौर पर, मुझे थोड़ी-थोड़ी करके जानकारी एकत्र करनी थी, और अब मैं अपना अनुभव आपके साथ साझा करना चाहता हूं।



पर निर्भर करता है



पहली चीज जो हम करना चाहते हैं, वह है हमारे बंडल के लिए एक नया भंडार बनाना और उससे संबंधित फाइलों को जोड़ना। हमारे बंडल, निश्चित रूप से, बाहरी निर्भरताएं हैं। उन्हें हल करने के लिए, हम संगीतकार का उपयोग करेंगे। मैंने इसे विश्व स्तर पर स्थापित किया है, इसके लिए सही है। चलिए शुरू करते हैं:



$ composer init #









हमने अपने प्रोजेक्ट को इनिशियलाइज़ किया है। composer.json



फ़ाइल को रूट डायरेक्टरी में बनाया गया था। इसके कई खंड हमारे लिए दिलचस्प हैं: require



, require-dev



, suggest



। आइए उनमें से प्रत्येक के माध्यम से जाने:



कमांड के साथ आवश्यक घटक स्थापित करें

$ composer install







ठीक है, निर्भरता के साथ।



कोर



परीक्षण सेवाओं और कार्यात्मक परीक्षण के लिए, हमें लगभग पूर्ण विशेषताओं वाले एप्लिकेशन की आवश्यकता है।

क्लास ऑटोलैड


हमें अपने परीक्षणों के साथ अपनी bootstrap.php



.php को निर्देशिका में बनाने की आवश्यकता होगी और यह इंगित करना चाहिए कि phpunit का उपयोग करना चाहिए।

 <?php use Doctrine\Common\Annotations\AnnotationRegistry; //    Doctrine   use Composer\Autoload\ClassLoader; /** * @var ClassLoader $loader */ $loader = require __DIR__.'/../vendor/autoload.php'; AnnotationRegistry::registerLoader(array($loader, 'loadClass')); //    Doctrine   return $loader;
      
      







एक बार फिर मैं आपका ध्यान रेखा की ओर आकर्षित करना चाहता हूं AnnotationRegistry::registerLoader(array($loader, 'loadClass'));



। मेरा बंडल डॉक्ट्रिन और एनोटेशन का पूर्ण उपयोग करता है और यह मेरे लिए एक बड़ा आश्चर्य था जब मुझे बार-बार "एनोटेशन लोड नहीं किया जा सकता" पाठ के साथ एक अपवाद मिला।


हमारे phpunit.xml.dist



खोलें और इंगित करें कि हमारा bootstrap.php



phpunit.xml.dist



कहां है

 <phpunit bootstrap="./Tests/bootstrap.php">
      
      





AppKernel और कंसोल


अगला कदम एप्लिकेशन को इनिशियलाइज़ करना है। मैंने Tests/fixtures



फ़ोल्डर बनाया जहां हमारे परीक्षण एप्लिकेशन से संबंधित फाइलें झूठ होंगी। किसी भी AppKernel



एप्लिकेशन का मुख्य वर्ग AppKernel



, इसे Tests/fixtures/app



फ़ोल्डर में बनाएं

 <?php use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\HttpKernelInterface; class AppKernel extends Kernel { /** * @return array */ public function registerBundles() { $bundles = array( //     ); return $bundles; } /** * @param \Symfony\Component\Config\Loader\LoaderInterface $loader */ public function registerContainerConfiguration(LoaderInterface $loader) { $loader->load(__DIR__ . '/config/config.yml'); } }
      
      





अगला, हमें अपने कंटेनर को कॉन्फ़िगर करने की आवश्यकता होगी, इसके लिए हम फ़ाइल Tests/fixtures/app/config/config.yml



बनाते हैं।



यदि आपको एक कंसोल की आवश्यकता है, तो बस निम्नलिखित सामग्री के साथ एक Tests/fixtures/app/console



फ़ाइल बनाएं:

 #!/usr/bin/env php <?php // if you don't want to setup permissions the proper way, just uncomment the following PHP line // read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information //umask(0000); set_time_limit(0); require_once __DIR__.'/../../bootstrap.php'; require_once __DIR__.'/AppKernel.php'; use Symfony\Bundle\FrameworkBundle\Console\Application; use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Debug\Debug; $input = new ArgvInput(); $env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev'); $debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod'; if ($debug) { Debug::enable(); } $kernel = new AppKernel($env, $debug); $application = new Application($kernel); $application->run($input);
      
      





अब हम इंगित करते हैं कि हमारे आवेदन का मूल कहां स्थित है, निम्नलिखित निर्देश phpunit.xml.dist



:

 <php> <server name="KERNEL_DIR" value="Tests/Fixtures/app/" /> </php>
      
      







इन सरल जोड़तोड़ों के बाद, हमने अपना परीक्षण आवेदन प्राप्त किया और Symfony\Bundle\FrameworkBundle\Test\WebTestCase



का उपयोग करने का मार्ग प्रशस्त किया, जिसके साथ हम सिम्फनी 2 अनुप्रयोगों के संदर्भ में अपनी सेवाओं और अधिक का परीक्षण कर सकते हैं।



पूरा कोड यहां पढ़ें



पुनश्च: अगले लेख में मैं अपने बंडलों में डॉक्ट्रिन के परीक्षण की पेचीदगियों को तोड़ने की कोशिश करूँगा।



All Articles