खोज…
परिचय
टेस्टेबल कोड लिखना एक मजबूत, रखरखाव योग्य और फुर्तीली परियोजना के निर्माण का एक महत्वपूर्ण हिस्सा है। PHP के सबसे व्यापक रूप से उपयोग किए जाने वाले परीक्षण ढांचे के लिए समर्थन, PHPUnit , Laravel में बनाया गया है। PHPUnit को phpunit.xml
फ़ाइल का उपयोग करके कॉन्फ़िगर किया गया है, जो हर नए लारवेल एप्लिकेशन की रूट डायरेक्टरी में रहता है।
tests
निर्देशिका, रूट निर्देशिका में भी, व्यक्तिगत परीक्षण फ़ाइलें होती हैं जो आपके अनुप्रयोग के प्रत्येक भाग के परीक्षण के लिए तर्क रखती हैं। बेशक, इन परीक्षणों को लिखने के लिए एक डेवलपर के रूप में आपकी जिम्मेदारी है कि आप अपने आवेदन का निर्माण करें, लेकिन ExampleTest.php
आपको शामिल होने के लिए एक उदाहरण फ़ाइल, ExampleTest.php
शामिल है।
<?php
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class ExampleTest extends TestCase
{
/**
* A basic functional test example.
*
* @return void
*/
public function testBasicExample()
{
$this->visit('/')
->see('Laravel 5');
}
}
testBasicExample()
विधि में, हम साइट के इंडेक्स पेज पर जाते हैं और यह सुनिश्चित करते हैं कि हम उस पेज पर Laravel 5
का टेक्स्ट कहीं देखें। यदि पाठ मौजूद नहीं है, तो परीक्षण विफल हो जाएगा और एक त्रुटि उत्पन्न करेगा।
मिडलवेयर के बिना और एक ताज़ा डेटाबेस के साथ टेस्ट करें
कारीगरों को परीक्षण चलाने से पहले एक नए डेटाबेस को माइग्रेट करने के लिए, use DatabaseMigrations
। इसके अलावा अगर आप Auth जैसे मिडिलवेयर से बचना चाहते हैं तो use WithoutMiddleware
।
<?php
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
class ExampleTest extends TestCase
{
use DatabaseMigrations, WithoutMiddleware;
/**
* A basic functional test example.
*
* @return void
*/
public function testExampleIndex()
{
$this->visit('/protected-page')
->see('All good');
}
}
उत्परिवर्ती डेटाबेस कनेक्शन के लिए डेटाबेस लेनदेन
DatabaseTransactions
विशेषता डेटाबेस को परीक्षणों के दौरान सभी परिवर्तन रोलबैक करने की अनुमति देती है। यदि आप कई डेटाबेस रोलबैक करना चाहते हैं, तो आपको $connectionsToTransact
सेट करने की आवश्यकता है
use Illuminate\Foundation\Testing\DatabaseMigrations;
class ExampleTest extends TestCase
{
use DatabaseTransactions;
$connectionsToTransact =["mysql","sqlite"] //tell Laravel which database need to rollBack
public function testExampleIndex()
{
$this->visit('/action/parameter')
->see('items');
}
}
मेमोरी डेटाबेस का उपयोग करके परीक्षण सेटअप
निम्न सेटअप यह सुनिश्चित करता है कि परीक्षण ढांचा (PHPUnit) उपयोग करता है :memory:
डेटाबेस।
config / database.php
'connections' => [
'sqlite_testing' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],
.
.
.
./phpunit.xml
.
.
.
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="APP_URL" value="http://example.dev"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="sqlite_testing"/>
</php>
</phpunit>
विन्यास
Phpunit.xml फ़ाइल परीक्षणों के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल है और पहले से ही PHPUnit के साथ परीक्षण के लिए सेटअप है।
डिफ़ॉल्ट परीक्षण वातावरण APP_ENV
के रूप में परिभाषित किया गया है testing
के साथ array
कैश ड्राइवर बनने के CACHE_DRIVER
। इस सेटअप के साथ, परीक्षण के दौरान कोई डेटा (सत्र / कैश) बरकरार नहीं रखा जाएगा।
विशिष्ट वातावरण के खिलाफ परीक्षण चलाने के लिए जैसे कि चूक को बदला जा सकता है:
<env name="DB_HOST" value="192.168.10.10"/>
<env name="DB_DATABASE" value="homestead"/>
<env name="DB_USERNAME" value="homestead"/>
<env name="DB_PASSWORD" value="secret"/>
या मेमोरी डेटाबेस में एक अस्थायी उपयोग करने के लिए:
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
लारवेल प्रलेखन से ध्यान रखने के लिए एक अंतिम नोट:
कॉन्फ़िगरेशन का उपयोग करके अपने कॉन्फ़िगरेशन कैश को साफ़ करना सुनिश्चित करें
config:clear
अपने परीक्षण चलाने से पहले कारीगर कोconfig:clear
करें!