पर निर्भर करता है
पहली चीज जो हम करना चाहते हैं, वह है हमारे बंडल के लिए एक नया भंडार बनाना और उससे संबंधित फाइलों को जोड़ना। हमारे बंडल, निश्चित रूप से, बाहरी निर्भरताएं हैं। उन्हें हल करने के लिए, हम संगीतकार का उपयोग करेंगे। मैंने इसे विश्व स्तर पर स्थापित किया है, इसके लिए सही है। चलिए शुरू करते हैं:
$ composer init #
हमने अपने प्रोजेक्ट को इनिशियलाइज़ किया है।
composer.json
फ़ाइल को रूट डायरेक्टरी में बनाया गया था। इसके कई खंड हमारे लिए दिलचस्प हैं:
require
,
require-dev
,
suggest
। आइए उनमें से प्रत्येक के माध्यम से जाने:
-
require
कुछ ऐसी है जिसके बिना हमारी परियोजना काम नहीं कर सकती -
require-dev
वह है जो हम विकास और परीक्षण के लिए उपयोग करते हैं -
suggest
- यहां आप कह सकते हैं कि आपका बंडल काम कर सकता है, उदाहरण के लिए, न केवल ORM के साथ, बल्कि ODM के साथ भी
कमांड के साथ आवश्यक घटक स्थापित करें
$ 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 अनुप्रयोगों के संदर्भ में अपनी सेवाओं और अधिक का परीक्षण कर सकते हैं।
पूरा कोड यहां पढ़ें
पुनश्च: अगले लेख में मैं अपने बंडलों में डॉक्ट्रिन के परीक्षण की पेचीदगियों को तोड़ने की कोशिश करूँगा।