ਲੇਖ

PHPUnit ਅਤੇ PEST ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਸਧਾਰਨ ਉਦਾਹਰਣਾਂ ਦੇ ਨਾਲ Laravel ਵਿੱਚ ਟੈਸਟ ਕਿਵੇਂ ਕਰਨੇ ਸਿੱਖੋ

ਜਦੋਂ ਇਹ ਆਟੋਮੇਟਿਡ ਟੈਸਟਾਂ ਜਾਂ ਯੂਨਿਟ ਟੈਸਟਾਂ ਦੀ ਗੱਲ ਆਉਂਦੀ ਹੈ, ਕਿਸੇ ਵੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਵਿੱਚ, ਦੋ ਵਿਰੋਧੀ ਰਾਏ ਹਨ:

  • ਸਮੇਂ ਦੀ ਬਰਬਾਦੀ
  • ਤੁਸੀਂ ਇਸ ਤੋਂ ਬਿਨਾਂ ਨਹੀਂ ਕਰ ਸਕਦੇ

ਇਸ ਲਈ, ਇਸ ਲੇਖ ਦੇ ਨਾਲ ਅਸੀਂ ਸਾਬਕਾ ਨੂੰ ਯਕੀਨ ਦਿਵਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਾਂਗੇ, ਖਾਸ ਤੌਰ 'ਤੇ ਇਹ ਦਰਸਾ ਕੇ ਕਿ ਲਾਰਵੇਲ ਵਿੱਚ ਸਵੈਚਲਿਤ ਟੈਸਟਿੰਗ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰਨਾ ਕਿੰਨਾ ਆਸਾਨ ਹੈ।

ਪਹਿਲਾਂ ਆਉ "ਕਿਉਂ" ਬਾਰੇ ਗੱਲ ਕਰੀਏ, ਅਤੇ ਫਿਰ ਆਉ ਕਿਵੇਂ ਦੀਆਂ ਕੁਝ ਉਦਾਹਰਣਾਂ ਦੇਖੀਏ।

ਸਾਨੂੰ ਆਟੋਮੇਟਿਡ ਟੈਸਟਿੰਗ ਦੀ ਲੋੜ ਕਿਉਂ ਹੈ

ਸਵੈਚਲਿਤ ਟੈਸਟ ਕੋਡ ਦੇ ਹਿੱਸੇ ਚਲਾਉਂਦੇ ਹਨ ਅਤੇ ਕਿਸੇ ਵੀ ਤਰੁੱਟੀ ਦੀ ਰਿਪੋਰਟ ਕਰਦੇ ਹਨ। ਇਹ ਉਹਨਾਂ ਦਾ ਵਰਣਨ ਕਰਨ ਦਾ ਸਭ ਤੋਂ ਸਰਲ ਤਰੀਕਾ ਹੈ। ਕਿਸੇ ਐਪ ਵਿੱਚ ਇੱਕ ਨਵੀਂ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਰੋਲ ਆਊਟ ਕਰਨ ਦੀ ਕਲਪਨਾ ਕਰੋ, ਅਤੇ ਫਿਰ ਇੱਕ ਨਿੱਜੀ ਰੋਬੋਟ ਸਹਾਇਕ ਜਾ ਕੇ ਨਵੀਂ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਦਸਤੀ ਜਾਂਚ ਕਰੇਗਾ, ਜਦੋਂ ਕਿ ਇਹ ਵੀ ਜਾਂਚ ਕਰੇਗਾ ਕਿ ਕੀ ਨਵਾਂ ਕੋਡ ਪੁਰਾਣੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਨੂੰ ਤੋੜਦਾ ਨਹੀਂ ਹੈ।

ਇਹ ਮੁੱਖ ਫਾਇਦਾ ਹੈ: ਸਾਰੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਆਟੋਮੈਟਿਕਲੀ ਦੁਬਾਰਾ ਟੈਸਟ ਕਰਨਾ। ਇਹ ਵਾਧੂ ਕੰਮ ਜਾਪਦਾ ਹੈ, ਪਰ ਜੇ ਤੁਸੀਂ "ਰੋਬੋਟ" ਨੂੰ ਅਜਿਹਾ ਕਰਨ ਲਈ ਨਹੀਂ ਕਹਿੰਦੇ, ਤਾਂ ਸਾਨੂੰ ਵਿਕਲਪਿਕ ਤੌਰ 'ਤੇ ਇਸਨੂੰ ਹੱਥੀਂ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ, ਠੀਕ? 

ਜਾਂ ਨਵੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਜਾਂਚ ਕੀਤੇ ਬਿਨਾਂ ਜਾਰੀ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਕੀ ਉਹ ਕੰਮ ਕਰਦੇ ਹਨ, ਉਮੀਦ ਹੈ ਕਿ ਉਪਭੋਗਤਾ ਬੱਗ ਦੀ ਰਿਪੋਰਟ ਕਰਨਗੇ।

ਸਵੈਚਲਿਤ ਟੈਸਟ ਸਾਨੂੰ ਕਈ ਫਾਇਦੇ ਦੇ ਸਕਦੇ ਹਨ:

  • ਮੈਨੁਅਲ ਟੈਸਟਿੰਗ ਸਮਾਂ ਬਚਾਓ;
  • ਉਹ ਤੁਹਾਨੂੰ ਰੀਗਰੈਸ਼ਨ ਤੋਂ ਬਚ ਕੇ ਲਾਗੂ ਕੀਤੇ ਗਏ ਨਵੇਂ ਫੰਕਸ਼ਨ ਅਤੇ ਇਕਸਾਰ ਫੰਕਸ਼ਨਾਂ 'ਤੇ ਸਮਾਂ ਬਚਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ;
  • ਇਸ ਲਾਭ ਨੂੰ ਸਾਰੀਆਂ ਨਵੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਪਹਿਲਾਂ ਤੋਂ ਲਾਗੂ ਕੀਤੀਆਂ ਸਾਰੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨਾਲ ਗੁਣਾ ਕਰੋ;
  • ਪਿਛਲੇ ਤਿੰਨ ਨੁਕਤੇ ਹਰ ਨਵੇਂ ਸੰਸਕਰਣ 'ਤੇ ਲਾਗੂ ਹੁੰਦੇ ਹਨ;
  • ...

ਟੀਮ ਦੇ ਨਵੇਂ ਡਿਵੈਲਪਰਾਂ ਦੇ ਨਾਲ, ਜੋ ਪਿਛਲੇ ਸਾਲਾਂ ਵਿੱਚ ਲਿਖੇ ਕੋਡ ਨੂੰ ਨਹੀਂ ਜਾਣਦੇ, ਜਾਂ ਇਸਦੀ ਜਾਂਚ ਕਿਵੇਂ ਕਰਨੀ ਹੈ, ਇੱਕ ਜਾਂ ਦੋ ਸਾਲਾਂ ਵਿੱਚ ਆਪਣੀ ਅਰਜ਼ੀ ਦੀ ਕਲਪਨਾ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। 

ਸਾਡੇ ਪਹਿਲੇ ਸਵੈਚਲਿਤ ਟੈਸਟ

ਪਹਿਲੀ ਕਰਨ ਲਈ ਲਾਰਵੇਲ ਵਿੱਚ ਆਟੋਮੈਟਿਕ ਟੈਸਟਿੰਗ, ਤੁਹਾਨੂੰ ਕੋਈ ਕੋਡ ਲਿਖਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ। ਹਾਂ, ਤੁਸੀਂ ਇਹ ਸਹੀ ਪੜ੍ਹਿਆ ਹੈ। ਸਭ ਕੁਝ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਸੰਰਚਿਤ ਅਤੇ ਪ੍ਰੀ-ਇੰਸਟਾਲੇਸ਼ਨ ਵਿੱਚ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈdefiਲਾਰਵੇਲ ਦੀ ਨਾਈਟ, ਪਹਿਲੀ ਮੁੱਢਲੀ ਉਦਾਹਰਣ ਸਮੇਤ।

ਤੁਸੀਂ Laravel ਪ੍ਰੋਜੈਕਟ ਨੂੰ ਸਥਾਪਿਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਤੁਰੰਤ ਪਹਿਲੇ ਟੈਸਟ ਚਲਾ ਸਕਦੇ ਹੋ:

laravel new project
cd project
php artisan test

ਇਹ ਤੁਹਾਡੇ ਕੰਸੋਲ ਵਿੱਚ ਨਤੀਜਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ:

ਜੇ ਅਸੀਂ ਪ੍ਰੀ 'ਤੇ ਇੱਕ ਨਜ਼ਰ ਮਾਰੀਏdefiਲਾਰਵੇਲ ਦੀ ਰਾਤ /tests, ਸਾਡੇ ਕੋਲ ਦੋ ਫਾਈਲਾਂ ਹਨ:

tests/feature/ExampleTest.php :

class ExampleTest extends TestCase
{
    public function test_the_application_returns_a_successful_response()
    {
        $response = $this->get('/');
 
        $response->assertStatus(200);
    }
}

ਇੱਥੇ ਕੀ ਹੋ ਰਿਹਾ ਹੈ ਇਹ ਸਮਝਣ ਲਈ ਤੁਹਾਨੂੰ ਕੋਈ ਸੰਟੈਕਸ ਜਾਣਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ: ਹੋਮ ਪੇਜ ਨੂੰ ਲੋਡ ਕਰੋ ਅਤੇ ਜਾਂਚ ਕਰੋ ਕਿ ਕੀ ਸਥਿਤੀ ਕੋਡ ਹੈ HTTP è "200 OK".

ਵਿਧੀ ਦੇ ਨਾਮ ਵਜੋਂ ਵੀ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ test_the_application_returns_a_successful_response() ਜਦੋਂ ਤੁਸੀਂ ਟੈਸਟ ਦੇ ਨਤੀਜੇ ਦੇਖਦੇ ਹੋ, ਤਾਂ ਸਿਰਫ਼ ਅੰਡਰਲਾਈਨ ਚਿੰਨ੍ਹ ਨੂੰ ਸਪੇਸ ਨਾਲ ਬਦਲ ਕੇ ਪੜ੍ਹਨਯੋਗ ਟੈਕਸਟ ਬਣ ਜਾਂਦਾ ਹੈ।

tests/Unit/ExampleTest.php :

class ExampleTest extends TestCase
{
    public function test_that_true_is_true()
    {
        $this->assertTrue(true);
    }
}

ਥੋੜਾ ਵਿਅਰਥ ਜਾਪਦਾ ਹੈ, ਇਹ ਵੇਖਣ ਲਈ ਕਿ ਕੀ ਇਹ ਸੱਚ ਹੈ? 

ਅਸੀਂ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਯੂਨਿਟ ਟੈਸਟਾਂ ਬਾਰੇ ਥੋੜੀ ਦੇਰ ਬਾਅਦ ਗੱਲ ਕਰਾਂਗੇ। ਹੁਣ ਲਈ, ਤੁਹਾਨੂੰ ਇਹ ਸਮਝਣ ਦੀ ਲੋੜ ਹੈ ਕਿ ਆਮ ਤੌਰ 'ਤੇ ਹਰੇਕ ਟੈਸਟ ਵਿੱਚ ਕੀ ਹੁੰਦਾ ਹੈ।

  • ਫੋਲਡਰ ਵਿੱਚ ਹਰੇਕ ਟੈਸਟ ਫਾਈਲ /tests ਇੱਕ PHP ਕਲਾਸ ਹੈ ਜੋ ਟੈਸਟਕੇਸ ਦਾ ਵਿਸਤਾਰ ਕਰਦੀ ਹੈ PHPUnit
  • ਹਰੇਕ ਕਲਾਸ ਦੇ ਅੰਦਰ, ਤੁਸੀਂ ਕਈ ਵਿਧੀਆਂ ਬਣਾ ਸਕਦੇ ਹੋ, ਆਮ ਤੌਰ 'ਤੇ ਕਿਸੇ ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਇੱਕ ਢੰਗ
  • ਹਰੇਕ ਵਿਧੀ ਦੇ ਅੰਦਰ ਤਿੰਨ ਕਿਰਿਆਵਾਂ ਹੁੰਦੀਆਂ ਹਨ: ਸਥਿਤੀ ਦੀ ਤਿਆਰੀ, ਫਿਰ ਕਾਰਵਾਈ ਅਤੇ ਫਿਰ ਤਸਦੀਕ (ਪੁਸ਼ਟੀ ਕਰੋ) ਕਿ ਕੀ ਨਤੀਜਾ ਉਮੀਦ ਅਨੁਸਾਰ ਹੈ

ਢਾਂਚਾਗਤ ਤੌਰ 'ਤੇ, ਤੁਹਾਨੂੰ ਬੱਸ ਇਹੀ ਜਾਣਨ ਦੀ ਲੋੜ ਹੈ, ਬਾਕੀ ਸਭ ਕੁਝ ਉਨ੍ਹਾਂ ਸਹੀ ਚੀਜ਼ਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਦੀ ਤੁਸੀਂ ਜਾਂਚ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।

ਇੱਕ ਖਾਲੀ ਟੈਸਟ ਕਲਾਸ ਬਣਾਉਣ ਲਈ, ਬਸ ਇਹ ਕਮਾਂਡ ਚਲਾਓ:

php artisan make:test HomepageTest

ਫਾਈਲ ਤਿਆਰ ਕੀਤੀ ਗਈ ਹੈ tests/Feature/HomepageTest.php:

class HomepageTest extends TestCase
{
    // Replace this method with your own ones
    public function test_example()
    {
        $response = $this->get('/');
 
        $response->assertStatus(200);
    }
}

ਹੁਣ ਆਓ ਦੇਖੀਏ ਕਿ ਜੇਕਰ ਲਾਰਵੇਲ ਵਿੱਚ ਇੱਕ ਟੈਸਟ ਕੋਡ ਫੇਲ ਹੋ ਜਾਂਦਾ ਹੈ ਤਾਂ ਕੀ ਹੁੰਦਾ ਹੈ

ਆਓ ਹੁਣ ਦੇਖੀਏ ਕਿ ਕੀ ਹੁੰਦਾ ਹੈ ਜੇਕਰ ਟੈਸਟ ਦੇ ਦਾਅਵੇ ਉਮੀਦ ਕੀਤੇ ਨਤੀਜੇ ਵਾਪਸ ਨਹੀਂ ਕਰਦੇ ਹਨ।

ਆਓ ਉਦਾਹਰਨ ਟੈਸਟਾਂ ਨੂੰ ਇਸ ਵਿੱਚ ਬਦਲੀਏ:

class ExampleTest extends TestCase
{
    public function test_the_application_returns_a_successful_response()
    {
        $response = $this->get('/non-existing-url');
 
        $response->assertStatus(200);
    }
}
 
 
class ExampleTest extends TestCase
{
    public function test_that_true_is_false()
    {
        $this->assertTrue(false);
    }
}

ਅਤੇ ਹੁਣ, ਜੇਕਰ ਅਸੀਂ ਕਮਾਂਡ ਚਲਾਉਂਦੇ ਹਾਂ php artisan test ਦੁਬਾਰਾ:

 FAIL  Tests\Unit\ExampleTest
⨯ that true is true
 
 FAIL  Tests\Feature\ExampleTest
⨯ the application returns a successful response
 
---
 
• Tests\Unit\ExampleTest > that true is true
Failed asserting that false is true.
 
at tests/Unit/ExampleTest.php:16
   12▕      * @return void
   13▕      */
   14▕     public function test_that_true_is_true()
   15▕     {
➜  16▕         $this->assertTrue(false);
   17▕     }
   18▕ }
   19▕
 
• Tests\Feature\ExampleTest > the application returns a successful response
Expected response status code [200] but received 404.
Failed asserting that 200 is identical to 404.
 
at tests/Feature/ExampleTest.php:19
   15▕     public function test_the_application_returns_a_successful_response()
   16▕     {
   17▕         $response = $this->get('/non-existing-url');
   18▕
➜  19▕         $response->assertStatus(200);
   20▕     }
   21▕ }
   22▕
 
 
Tests:  2 failed
Time:   0.11s

ਇੱਥੇ ਦੋ ਅਸਫਲ ਟੈਸਟ ਹਨ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਫੇਲ ਵਜੋਂ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਹੇਠਾਂ ਸਪੱਸ਼ਟੀਕਰਨ ਅਤੇ ਤੀਰ ਫੇਲ੍ਹ ਹੋਏ ਟੈਸਟਾਂ ਦੀ ਸਹੀ ਲਾਈਨ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੇ ਹਨ। ਗਲਤੀਆਂ ਨੂੰ ਇਸ ਤਰੀਕੇ ਨਾਲ ਦਰਸਾਇਆ ਗਿਆ ਹੈ.

ਉਦਾਹਰਨ: Laravel ਵਿੱਚ ਰਜਿਸਟਰੇਸ਼ਨ ਫਾਰਮ ਕੋਡ ਦੀ ਜਾਂਚ ਕਰਨਾ

ਮੰਨ ਲਓ ਕਿ ਸਾਡੇ ਕੋਲ ਇੱਕ ਫਾਰਮ ਹੈ ਅਤੇ ਸਾਨੂੰ ਵੱਖ-ਵੱਖ ਮਾਮਲਿਆਂ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਲੋੜ ਹੈ: ਅਸੀਂ ਜਾਂਚ ਕਰਦੇ ਹਾਂ ਕਿ ਕੀ ਇਹ ਅਵੈਧ ਡੇਟਾ ਨਾਲ ਅਸਫਲ ਹੁੰਦਾ ਹੈ, ਅਸੀਂ ਜਾਂਚ ਕਰਦੇ ਹਾਂ ਕਿ ਕੀ ਇਹ ਸਹੀ ਇਨਪੁਟ ਨਾਲ ਸਫਲ ਹੁੰਦਾ ਹੈ, ਆਦਿ।

ਅਧਿਕਾਰਤ ਸਟਾਰਟਰ ਕਿੱਟ Laravel Breeze ਦੁਆਰਾ ਆਈ ਸ਼ਾਮਲ ਹਨ ਇਸ ਦੇ ਅੰਦਰ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀ ਜਾਂਚ ਕਰ ਰਿਹਾ ਹੈ. ਆਓ ਉਥੋਂ ਕੁਝ ਉਦਾਹਰਣਾਂ ਦੇਖੀਏ:

tests/Feature/RegistrationTest.php

use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
 
class RegistrationTest extends TestCase
{
    use RefreshDatabase;
 
    public function test_registration_screen_can_be_rendered()
    {
        $response = $this->get('/register');
 
        $response->assertStatus(200);
    }
 
    public function test_new_users_can_register()
    {
        $response = $this->post('/register', [
            'name' => 'Test User',
            'email' => 'test@example.com',
            'password' => 'password',
            'password_confirmation' => 'password',
        ]);
 
        $this->assertAuthenticated();
        $response->assertRedirect(RouteServiceProvider::HOME);
    }
}

ਇੱਥੇ ਸਾਡੇ ਕੋਲ ਇੱਕ ਕਲਾਸ ਵਿੱਚ ਦੋ ਟੈਸਟ ਹਨ, ਕਿਉਂਕਿ ਉਹ ਦੋਵੇਂ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਫਾਰਮ ਨਾਲ ਸਬੰਧਤ ਹਨ: ਇੱਕ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਫਾਰਮ ਸਹੀ ਢੰਗ ਨਾਲ ਲੋਡ ਹੋਇਆ ਹੈ ਅਤੇ ਦੂਜਾ ਇਹ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਸਬਮਿਸ਼ਨ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ।

ਆਉ ਅਸੀਂ ਨਤੀਜੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਦੋ ਹੋਰ ਤਰੀਕਿਆਂ, ਦੋ ਹੋਰ ਦਾਅਵੇ ਤੋਂ ਜਾਣੂ ਹੋ ਜਾਂਦੇ ਹਾਂ: $this->assertAuthenticated()$response->assertRedirect(). ਦੇ ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼ਾਂ ਵਿੱਚ ਉਪਲਬਧ ਸਾਰੇ ਦਾਅਵੇ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ PHPUnit e Laravel ਜਵਾਬ . ਨੋਟ ਕਰੋ ਕਿ ਵਿਸ਼ੇ 'ਤੇ ਕੁਝ ਆਮ ਦਾਅਵੇ ਹੁੰਦੇ ਹਨ $this, ਜਦੋਂ ਕਿ ਦੂਸਰੇ ਖਾਸ ਦੀ ਜਾਂਚ ਕਰਦੇ ਹਨ $responseਰੂਟ ਕਾਲ ਤੋਂ।

ਇਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਗੱਲ ਇਹ ਹੈ ਕਿ use RefreshDatabase;ਸਟੇਟਮੈਂਟ, ਸਟਰੋਕ ਦੇ ਨਾਲ, ਕਲਾਸ ਦੇ ਉੱਪਰ ਪਾਈ ਗਈ। ਇਹ ਉਦੋਂ ਜ਼ਰੂਰੀ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਟੈਸਟ ਦੀਆਂ ਕਾਰਵਾਈਆਂ ਡੇਟਾਬੇਸ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕਰ ਸਕਦੀਆਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ, ਲੌਗਿੰਗ ਵਿੱਚ ਇੱਕ ਨਵੀਂ ਐਂਟਰੀ ਜੋੜਦੀ ਹੈ usersਡਾਟਾਬੇਸ ਸਾਰਣੀ. ਇਸਦੇ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਕ ਵੱਖਰਾ ਟੈਸਟ ਡੇਟਾਬੇਸ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਨਾਲ ਅਪਡੇਟ ਕੀਤਾ ਜਾਵੇਗਾ php artisan migrate:freshਹਰ ਵਾਰ ਟੈਸਟ ਚਲਾਏ ਜਾਂਦੇ ਹਨ।

ਤੁਹਾਡੇ ਕੋਲ ਦੋ ਵਿਕਲਪ ਹਨ: ਸਰੀਰਕ ਤੌਰ 'ਤੇ ਇੱਕ ਵੱਖਰਾ ਡੇਟਾਬੇਸ ਬਣਾਓ ਜਾਂ ਇੱਕ ਇਨ-ਮੈਮੋਰੀ SQLite ਡੇਟਾਬੇਸ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਦੋਵੇਂ ਫਾਈਲ ਵਿੱਚ ਸੰਰਚਿਤ ਹਨ phpunit.xmlਮੂਲ ਰੂਪ ਵਿੱਚ ਪ੍ਰਦਾਨ ਕੀਤਾ ਗਿਆ ਹੈdefiਨੀਤਾ ਨਾਲ Laravel. ਖਾਸ ਤੌਰ 'ਤੇ, ਤੁਹਾਨੂੰ ਇਸ ਹਿੱਸੇ ਦੀ ਲੋੜ ਹੈ:

<php>
    <env name="APP_ENV" value="testing"/>
    <env name="BCRYPT_ROUNDS" value="4"/>
    <env name="CACHE_DRIVER" value="array"/>
    <!-- <env name="DB_CONNECTION" value="sqlite"/> -->
    <!-- <env name="DB_DATABASE" value=":memory:"/> -->
    <env name="MAIL_MAILER" value="array"/>
    <env name="QUEUE_CONNECTION" value="sync"/>
    <env name="SESSION_DRIVER" value="array"/>
    <env name="TELESCOPE_ENABLED" value="false"/>
</php>

ਦੇਖੋ DB_CONNECTIONDB_DATABASEਕਿਨ੍ਹਾਂ 'ਤੇ ਟਿੱਪਣੀ ਕੀਤੀ ਜਾਂਦੀ ਹੈ? ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਤੁਹਾਡੇ ਸਰਵਰ 'ਤੇ SQLite ਹੈ, ਤਾਂ ਸਭ ਤੋਂ ਸਰਲ ਕਾਰਵਾਈ ਸਿਰਫ਼ ਉਹਨਾਂ ਲਾਈਨਾਂ ਨੂੰ ਅਨਕਮੇਂਟ ਕਰਨਾ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਟੈਸਟ ਉਸ ਇਨ-ਮੈਮੋਰੀ ਡੇਟਾਬੇਸ ਦੇ ਵਿਰੁੱਧ ਚੱਲਣਗੇ।

ਇਸ ਟੈਸਟ ਵਿੱਚ ਅਸੀਂ ਕਹਿੰਦੇ ਹਾਂ ਕਿ ਉਪਭੋਗਤਾ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਪ੍ਰਮਾਣਿਤ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਸਹੀ ਹੋਮਪੇਜ ਤੇ ਰੀਡਾਇਰੈਕਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਪਰ ਅਸੀਂ ਡੇਟਾਬੇਸ ਵਿੱਚ ਅਸਲ ਡੇਟਾ ਦੀ ਵੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹਾਂ।

ਇਸ ਕੋਡ ਤੋਂ ਇਲਾਵਾ:

$this->assertAuthenticated();
$response->assertRedirect(RouteServiceProvider::HOME);

ਅਸੀਂ ਵੀ ਵਰਤ ਸਕਦੇ ਹਾਂ ਡਾਟਾਬੇਸ ਟੈਸਟ ਦੇ ਦਾਅਵੇ ਅਤੇ ਅਜਿਹਾ ਕੁਝ ਕਰੋ:

$this->assertDatabaseCount('users', 1);
 
// Or...
$this->assertDatabaseHas('users', [
    'email' => 'test@example.com',
]);

ਲੌਗਇਨ ਪੰਨੇ ਦੀ ਉਦਾਹਰਨ

ਆਓ ਹੁਣ ਲਾਰਵੇਲ ਬ੍ਰੀਜ਼ ਦੇ ਨਾਲ ਇੱਕ ਲੌਗਇਨ ਪੰਨੇ ਦੀ ਇੱਕ ਹੋਰ ਉਦਾਹਰਣ ਵੇਖੀਏ

tests/Feature/AuthenticationTest.php:

class AuthenticationTest extends TestCase
{
    use RefreshDatabase;
 
    public function test_login_screen_can_be_rendered()
    {
        $response = $this->get('/login');
 
        $response->assertStatus(200);
    }
 
    public function test_users_can_authenticate_using_the_login_screen()
    {
        $user = User::factory()->create();
 
        $response = $this->post('/login', [
            'email' => $user->email,
            'password' => 'password',
        ]);
 
        $this->assertAuthenticated();
        $response->assertRedirect(RouteServiceProvider::HOME);
    }
 
    public function test_users_can_not_authenticate_with_invalid_password()
    {
        $user = User::factory()->create();
 
        $this->post('/login', [
            'email' => $user->email,
            'password' => 'wrong-password',
        ]);
 
        $this->assertGuest();
    }
}

ਇਹ ਲਾਗਇਨ ਫਾਰਮ ਬਾਰੇ ਹੈ। ਤਰਕ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਦੇ ਸਮਾਨ ਹੈ, ਠੀਕ ਹੈ? ਪਰ ਦੋ ਦੀ ਬਜਾਏ ਤਿੰਨ ਤਰੀਕੇ, ਇਸ ਲਈ ਇਹ ਚੰਗੇ ਅਤੇ ਮਾੜੇ ਦੋਵਾਂ ਦ੍ਰਿਸ਼ਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਦਾ ਇੱਕ ਉਦਾਹਰਣ ਹੈ। ਇਸ ਲਈ, ਆਮ ਤਰਕ ਇਹ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਦੋਵਾਂ ਮਾਮਲਿਆਂ ਦੀ ਜਾਂਚ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ: ਜਦੋਂ ਚੀਜ਼ਾਂ ਠੀਕ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਕਦੋਂ ਉਹ ਅਸਫਲ ਹੁੰਦੀਆਂ ਹਨ।

ਇਨੋਵੇਸ਼ਨ ਨਿਊਜ਼ਲੈਟਰ
ਨਵੀਨਤਾ ਬਾਰੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਖ਼ਬਰਾਂ ਨੂੰ ਨਾ ਭੁੱਲੋ। ਉਹਨਾਂ ਨੂੰ ਈਮੇਲ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ।

ਨਾਲ ਹੀ, ਤੁਸੀਂ ਇਸ ਟੈਸਟ ਵਿੱਚ ਜੋ ਦੇਖਦੇ ਹੋ ਉਹ ਹੈ ਦੀ ਵਰਤੋਂ ਡਾਟਾਬੇਸ ਫੈਕਟਰੀਆਂ : ਲਾਰਵੇਲ ਨਕਲੀ ਉਪਭੋਗਤਾ ਬਣਾਉਂਦਾ ਹੈ ( ਦੁਬਾਰਾ, ਤੁਹਾਡੇ ਅੱਪਡੇਟ ਕੀਤੇ ਟੈਸਟ ਡੇਟਾਬੇਸ 'ਤੇ ) ਅਤੇ ਫਿਰ ਸਹੀ ਜਾਂ ਗਲਤ ਪ੍ਰਮਾਣ ਪੱਤਰਾਂ ਨਾਲ ਲੌਗਇਨ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ।

ਦੁਬਾਰਾ ਫਿਰ, Laravel ਫੈਕਟਰੀ ਪ੍ਰੀ ਤਿਆਰ ਕਰਦਾ ਹੈdefiਲਈ ਝੂਠੇ ਡੇਟਾ ਦੇ ਨਾਲ ਨੀਟਾ Userਮਾਡਲ, ਬਾਕਸ ਦੇ ਬਾਹਰ.

database/factories/UserFactory.php:

class UserFactory extends Factory
{
    public function definition()
    {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ];
    }
}

ਤੁਸੀਂ ਦੇਖੋ, ਲਾਰਵੇਲ ਦੁਆਰਾ ਖੁਦ ਕਿੰਨੀਆਂ ਚੀਜ਼ਾਂ ਤਿਆਰ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਤਾਂ ਕੀ ਸਾਡੇ ਲਈ ਟੈਸਟਿੰਗ ਸ਼ੁਰੂ ਕਰਨਾ ਆਸਾਨ ਹੋਵੇਗਾ?

ਇਸ ਲਈ ਜੇਕਰ ਅਸੀਂ ਚਲਾਉਂਦੇ ਹਾਂ php artisan testLaravel Breeze ਨੂੰ ਸਥਾਪਿਤ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਸਾਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਕੁਝ ਦੇਖਣਾ ਚਾਹੀਦਾ ਹੈ:

 PASS  Tests\Unit\ExampleTest
✓ that true is true
 
 PASS  Tests\Feature\Auth\AuthenticationTest
✓ login screen can be rendered
✓ users can authenticate using the login screen
✓ users can not authenticate with invalid password
 
 PASS  Tests\Feature\Auth\EmailVerificationTest
✓ email verification screen can be rendered
✓ email can be verified
✓ email is not verified with invalid hash
 
 PASS  Tests\Feature\Auth\PasswordConfirmationTest
✓ confirm password screen can be rendered
✓ password can be confirmed
✓ password is not confirmed with invalid password
 
 PASS  Tests\Feature\Auth\PasswordResetTest
✓ reset password link screen can be rendered
✓ reset password link can be requested
✓ reset password screen can be rendered
✓ password can be reset with valid token
 
 PASS  Tests\Feature\Auth\RegistrationTest
✓ registration screen can be rendered
✓ new users can register
 
 PASS  Tests\Feature\ExampleTest
✓ the application returns a successful response
 
Tests:  17 passed
Time:   0.61s

ਯੂਨਿਟ ਟੈਸਟਾਂ ਅਤੇ ਹੋਰਾਂ ਦੇ ਮੁਕਾਬਲੇ ਕਾਰਜਸ਼ੀਲ ਟੈਸਟ

ਤੁਸੀਂ ਸਬਫੋਲਡਰ ਵੇਖੇ ਹਨ tests/Feature e tests/Unit ?. 

ਉਹਨਾਂ ਵਿੱਚ ਕੀ ਅੰਤਰ ਹੈ? 

ਵਿਸ਼ਵਵਿਆਪੀ ਤੌਰ 'ਤੇ, ਲਾਰਵੇਲ/PHP ਈਕੋਸਿਸਟਮ ਤੋਂ ਬਾਹਰ, ਆਟੋਮੇਟਿਡ ਟੈਸਟਿੰਗ ਦੀਆਂ ਕਈ ਕਿਸਮਾਂ ਹਨ। ਤੁਸੀਂ ਅਜਿਹੇ ਸ਼ਬਦ ਲੱਭ ਸਕਦੇ ਹੋ:

  • ਯੂਨਿਟ ਟੈਸਟ
  • ਵਿਸ਼ੇਸ਼ਤਾ ਟੈਸਟਿੰਗ
  • ਏਕੀਕਰਣ ਟੈਸਟ
  • ਕਾਰਜਾਤਮਕ ਟੈਸਟ
  • ਅੰਤ-ਤੋਂ-ਅੰਤ ਟੈਸਟਿੰਗ
  • ਸਵੀਕ੍ਰਿਤੀ ਟੈਸਟ
  • ਸਮੋਕ ਟੈਸਟ
  • ਆਦਿ

ਇਹ ਗੁੰਝਲਦਾਰ ਜਾਪਦਾ ਹੈ, ਅਤੇ ਇਸ ਕਿਸਮ ਦੇ ਟੈਸਟਾਂ ਵਿਚਕਾਰ ਅਸਲ ਅੰਤਰ ਕਈ ਵਾਰ ਧੁੰਦਲੇ ਹੋ ਜਾਂਦੇ ਹਨ। ਇਸ ਲਈ ਲਾਰਵੇਲ ਨੇ ਇਹਨਾਂ ਸਾਰੀਆਂ ਉਲਝਣ ਵਾਲੀਆਂ ਸ਼ਰਤਾਂ ਨੂੰ ਸਰਲ ਬਣਾਇਆ ਹੈ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਦੋ ਵਿੱਚ ਵੰਡਿਆ ਹੈ: ਯੂਨਿਟ/ਵਿਸ਼ੇਸ਼ਤਾ।

ਸਧਾਰਨ ਰੂਪ ਵਿੱਚ, ਵਿਸ਼ੇਸ਼ਤਾ ਟੈਸਟ ਤੁਹਾਡੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀ ਅਸਲ ਕਾਰਜਕੁਸ਼ਲਤਾ ਨੂੰ ਚਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਨ: URL ਪ੍ਰਾਪਤ ਕਰੋ, API ਨੂੰ ਕਾਲ ਕਰੋ, ਫਾਰਮ ਭਰਨ ਵਰਗੇ ਸਹੀ ਵਿਵਹਾਰ ਦੀ ਨਕਲ ਕਰੋ। ਵਿਸ਼ੇਸ਼ਤਾ ਟੈਸਟ ਆਮ ਤੌਰ 'ਤੇ ਉਹੀ ਜਾਂ ਸਮਾਨ ਓਪਰੇਸ਼ਨ ਕਰਦੇ ਹਨ ਜਿਵੇਂ ਕਿ ਕੋਈ ਵੀ ਪ੍ਰੋਜੈਕਟ ਉਪਭੋਗਤਾ ਅਸਲ ਜੀਵਨ ਵਿੱਚ ਹੱਥੀਂ ਕਰਦਾ ਹੈ।

ਯੂਨਿਟ ਟੈਸਟਾਂ ਦੇ ਦੋ ਅਰਥ ਹਨ। ਆਮ ਤੌਰ 'ਤੇ, ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਕਿਸੇ ਵੀ ਸਵੈਚਲਿਤ ਟੈਸਟ ਨੂੰ "ਯੂਨਿਟ ਟੈਸਟਿੰਗ" ਕਿਹਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਪੂਰੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ "ਯੂਨਿਟ ਟੈਸਟਿੰਗ" ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ। ਪਰ ਕਾਰਜਕੁਸ਼ਲਤਾ ਬਨਾਮ ਯੂਨਿਟ ਦੇ ਸੰਦਰਭ ਵਿੱਚ, ਇਹ ਪ੍ਰਕਿਰਿਆ ਕੋਡ ਦੀ ਇੱਕ ਖਾਸ ਗੈਰ-ਜਨਤਕ ਇਕਾਈ ਨੂੰ ਅਲੱਗ-ਥਲੱਗ ਕਰਕੇ ਟੈਸਟ ਕਰਨ ਬਾਰੇ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਵਿਧੀ ਵਾਲੀ Laravel ਕਲਾਸ ਹੈ ਜੋ ਕਿਸੇ ਚੀਜ਼ ਦੀ ਗਣਨਾ ਕਰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਪੈਰਾਮੀਟਰਾਂ ਦੇ ਨਾਲ ਕੁੱਲ ਆਰਡਰ ਦੀ ਕੀਮਤ। ਇਸ ਲਈ, ਯੂਨਿਟ ਟੈਸਟ ਇਹ ਦੱਸੇਗਾ ਕਿ ਕੀ ਵੱਖ-ਵੱਖ ਮਾਪਦੰਡਾਂ ਦੇ ਨਾਲ, ਉਸ ਵਿਧੀ (ਕੋਡ ਯੂਨਿਟ) ਤੋਂ ਸਹੀ ਨਤੀਜੇ ਵਾਪਸ ਕੀਤੇ ਗਏ ਹਨ।

ਇੱਕ ਯੂਨਿਟ ਟੈਸਟ ਬਣਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਕ ਫਲੈਗ ਜੋੜਨ ਦੀ ਲੋੜ ਹੈ:

php artisan make:test OrderPriceTest --unit

ਤਿਆਰ ਕੀਤਾ ਕੋਡ ਪ੍ਰੀ ਯੂਨਿਟ ਟੈਸਟ ਦੇ ਸਮਾਨ ਹੈdefiਲਾਰਵੇਲ ਸਿਸਟਮ:

class OrderPriceTest extends TestCase
{
    public function test_example()
    {
        $this->assertTrue(true);
    }
}

ਜਿਵੇਂ ਕਿ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ, ਇਹ ਮੌਜੂਦ ਨਹੀਂ ਹੈ RefreshDatabase, ਅਤੇ ਇਹ ਇੱਕ ਹੈ defiਸਭ ਤੋਂ ਆਮ ਯੂਨਿਟ ਟੈਸਟ ਪਰਿਭਾਸ਼ਾਵਾਂ: ਇਹ ਡੇਟਾਬੇਸ ਨੂੰ ਨਹੀਂ ਛੂਹਦਾ, ਇਹ ਚੱਲ ਰਹੇ ਐਪਲੀਕੇਸ਼ਨ ਤੋਂ ਅਲੱਗ "ਬਲੈਕ ਬਾਕਸ" ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ।

ਉਸ ਉਦਾਹਰਣ ਦੀ ਨਕਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹੋਏ ਜਿਸਦਾ ਮੈਂ ਪਹਿਲਾਂ ਜ਼ਿਕਰ ਕੀਤਾ ਹੈ, ਆਓ ਕਲਪਨਾ ਕਰੀਏ ਕਿ ਸਾਡੇ ਕੋਲ ਇੱਕ ਸੇਵਾ ਵਰਗ ਹੈ OrderPrice.

app/Services/OrderPriceService.php:

class OrderPriceService
{
    public function calculatePrice($productId, $quantity, $tax = 0.0)
    {
        // Some kind of calculation logic
    }
}

ਫਿਰ, ਯੂਨਿਟ ਟੈਸਟ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦੇ ਸਕਦਾ ਹੈ:

class OrderPriceTest extends TestCase
{
    public function test_single_product_no_taxes()
    {
        $product = Product::factory()->create(); // generate a fake product
        $price = (new OrderPriceService())->calculatePrice($product->id, 1);
        $this->assertEquals(1, $price);
    }
 
    public function test_single_product_with_taxes()
    {
        $price = (new OrderPriceService())->calculatePrice($product->id, 1, 20);
        $this->assertEquals(1.2, $price);
    }
 
    // More cases with more parameters
}

ਲਾਰਵੇਲ ਪ੍ਰੋਜੈਕਟਾਂ ਦੇ ਨਾਲ ਮੇਰੇ ਨਿੱਜੀ ਅਨੁਭਵ ਵਿੱਚ, ਜ਼ਿਆਦਾਤਰ ਟੈਸਟ ਫੀਚਰ ਟੈਸਟ ਹੁੰਦੇ ਹਨ, ਯੂਨਿਟ ਟੈਸਟ ਨਹੀਂ। ਪਹਿਲਾਂ, ਤੁਹਾਨੂੰ ਇਹ ਜਾਂਚ ਕਰਨ ਦੀ ਲੋੜ ਹੈ ਕਿ ਕੀ ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਕੰਮ ਕਰਦੀ ਹੈ, ਜਿਸ ਤਰੀਕੇ ਨਾਲ ਅਸਲ ਲੋਕ ਇਸਦੀ ਵਰਤੋਂ ਕਰਨਗੇ।

ਅੱਗੇ, ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਵਿਸ਼ੇਸ਼ ਗਣਨਾਵਾਂ ਜਾਂ ਤਰਕ ਹਨ ਤਾਂ ਤੁਸੀਂ ਕਰ ਸਕਦੇ ਹੋ definire ਇੱਕ ਯੂਨਿਟ ਦੇ ਰੂਪ ਵਿੱਚ, ਪੈਰਾਮੀਟਰਾਂ ਦੇ ਨਾਲ, ਤੁਸੀਂ ਖਾਸ ਤੌਰ 'ਤੇ ਇਸਦੇ ਲਈ ਯੂਨਿਟ ਟੈਸਟ ਬਣਾ ਸਕਦੇ ਹੋ।

ਕਈ ਵਾਰ, ਟੈਸਟ ਲਿਖਣ ਲਈ ਕੋਡ ਨੂੰ ਆਪਣੇ ਆਪ ਵਿੱਚ ਸੋਧਣ ਅਤੇ ਇਸਨੂੰ ਹੋਰ "ਟੈਸਟੇਬਲ" ਬਣਾਉਣ ਲਈ ਰੀਫੈਕਟਰ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ: ਯੂਨਿਟਾਂ ਨੂੰ ਵਿਸ਼ੇਸ਼ ਕਲਾਸਾਂ ਜਾਂ ਤਰੀਕਿਆਂ ਵਿੱਚ ਵੱਖ ਕਰਨਾ।

ਟੈਸਟ ਕਦੋਂ/ਕਿਵੇਂ ਕਰਨੇ ਹਨ?

ਇਸ ਦੀ ਅਸਲ ਵਰਤੋਂ ਕੀ ਹੈ php artisan test, ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਕਦੋਂ ਚਲਾਉਣਾ ਚਾਹੀਦਾ ਹੈ?

ਤੁਹਾਡੇ ਕਾਰੋਬਾਰੀ ਵਰਕਫਲੋ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹੋਏ, ਵੱਖ-ਵੱਖ ਪਹੁੰਚ ਹਨ, ਪਰ ਆਮ ਤੌਰ 'ਤੇ ਤੁਹਾਨੂੰ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਨਵੀਨਤਮ ਕੋਡ ਤਬਦੀਲੀਆਂ ਨੂੰ ਅੱਗੇ ਵਧਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਕਿ ਸਾਰੇ ਟੈਸਟ "ਹਰੇ" (ਜਿਵੇਂ ਕਿ ਗਲਤੀ-ਮੁਕਤ) ਹਨ।

ਫਿਰ, ਤੁਸੀਂ ਆਪਣੇ ਕੰਮ 'ਤੇ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਕੰਮ ਕਰਦੇ ਹੋ, ਅਤੇ ਜਦੋਂ ਤੁਸੀਂ ਸੋਚਦੇ ਹੋ ਕਿ ਤੁਸੀਂ ਪੂਰਾ ਕਰ ਲਿਆ ਹੈ, ਤਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕੁਝ ਟੈਸਟ ਚਲਾਓ ਕਿ ਤੁਸੀਂ ਕੁਝ ਵੀ ਤੋੜਿਆ ਨਹੀਂ ਹੈ। ਯਾਦ ਰੱਖੋ, ਤੁਹਾਡਾ ਕੋਡ ਨਾ ਸਿਰਫ਼ ਤੁਹਾਡੇ ਤਰਕ ਵਿੱਚ ਬੱਗ ਪੈਦਾ ਕਰ ਸਕਦਾ ਹੈ, ਸਗੋਂ ਅਣਜਾਣੇ ਵਿੱਚ ਬਹੁਤ ਪਹਿਲਾਂ ਲਿਖੇ ਗਏ ਕਿਸੇ ਹੋਰ ਵਿਅਕਤੀ ਦੇ ਕੋਡ ਵਿੱਚ ਕੁਝ ਹੋਰ ਵਿਵਹਾਰ ਨੂੰ ਵੀ ਤੋੜ ਸਕਦਾ ਹੈ।

ਜੇ ਅਸੀਂ ਇਸ ਨੂੰ ਇੱਕ ਕਦਮ ਹੋਰ ਅੱਗੇ ਵਧਾਉਂਦੇ ਹਾਂ, ਤਾਂ ਇਹ ਸਵੈਚਲਿਤ ਕਰਨਾ ਸੰਭਵ ਹੈ ਬਹੁਤ ਸਾਰੇ ਚੀਜ਼ਾਂ ਵੱਖ-ਵੱਖ CI/CD ਟੂਲਸ ਦੇ ਨਾਲ, ਤੁਸੀਂ ਟੈਸਟਾਂ ਨੂੰ ਚਲਾਉਣ ਲਈ ਨਿਰਧਾਰਿਤ ਕਰ ਸਕਦੇ ਹੋ ਜਦੋਂ ਵੀ ਕੋਈ ਵਿਅਕਤੀ ਕਿਸੇ ਖਾਸ ਗਿੱਟ ਸ਼ਾਖਾ ਵਿੱਚ ਜਾਂ ਕੋਡ ਨੂੰ ਉਤਪਾਦਨ ਸ਼ਾਖਾ ਵਿੱਚ ਮਿਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਬਦਲਾਵ ਕਰਦਾ ਹੈ। ਸਭ ਤੋਂ ਸਰਲ ਵਰਕਫਲੋ ਗਿਥਬ ਐਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਹੋਵੇਗਾ, ਮੇਰੇ ਕੋਲ ਹੈ ਇੱਕ ਵੱਖਰੀ ਵੀਡੀਓ ਜੋ ਇਸ ਨੂੰ ਸਾਬਤ ਕਰਦਾ ਹੈ.

ਤੁਹਾਨੂੰ ਕੀ ਟੈਸਟ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ?

ਅਖੌਤੀ "ਟੈਸਟ ਕਵਰੇਜ" ਕਿੰਨੀ ਵੱਡੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ ਇਸ ਬਾਰੇ ਵੱਖੋ-ਵੱਖਰੇ ਵਿਚਾਰ ਹਨ: ਹਰ ਪੰਨੇ 'ਤੇ ਹਰ ਸੰਭਵ ਕਾਰਵਾਈ ਅਤੇ ਕੇਸ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ, ਜਾਂ ਕੰਮ ਨੂੰ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਹਿੱਸਿਆਂ ਤੱਕ ਸੀਮਤ ਕਰੋ।

ਵਾਸਤਵ ਵਿੱਚ, ਇਹ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਮੈਂ ਉਹਨਾਂ ਲੋਕਾਂ ਨਾਲ ਸਹਿਮਤ ਹਾਂ ਜੋ ਸਵੈਚਲਿਤ ਟੈਸਟਿੰਗ ਨੂੰ ਅਸਲ ਲਾਭ ਪ੍ਰਦਾਨ ਕਰਨ ਨਾਲੋਂ ਵੱਧ ਸਮਾਂ ਲੈਣ ਦਾ ਦੋਸ਼ ਲਗਾਉਂਦੇ ਹਨ। ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਜੇਕਰ ਤੁਸੀਂ ਹਰ ਇੱਕ ਵੇਰਵੇ ਲਈ ਟੈਸਟ ਲਿਖਦੇ ਹੋ। ਉਸ ਨੇ ਕਿਹਾ, ਇਹ ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਦੁਆਰਾ ਲੋੜੀਂਦਾ ਹੋ ਸਕਦਾ ਹੈ: ਮੁੱਖ ਸਵਾਲ ਇਹ ਹੈ ਕਿ "ਸੰਭਾਵੀ ਗਲਤੀ ਦੀ ਕੀਮਤ ਕੀ ਹੈ"।

ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਤੁਹਾਨੂੰ ਇਹ ਸਵਾਲ ਪੁੱਛ ਕੇ ਆਪਣੇ ਟੈਸਟਿੰਗ ਯਤਨਾਂ ਨੂੰ ਤਰਜੀਹ ਦੇਣ ਦੀ ਲੋੜ ਹੈ ਕਿ "ਜੇ ਇਹ ਕੋਡ ਅਸਫਲ ਹੋ ਗਿਆ ਤਾਂ ਕੀ ਹੋਵੇਗਾ?" ਜੇਕਰ ਤੁਹਾਡੀ ਭੁਗਤਾਨ ਪ੍ਰਣਾਲੀ ਵਿੱਚ ਬੱਗ ਹਨ, ਤਾਂ ਇਹ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਕਾਰੋਬਾਰ ਨੂੰ ਪ੍ਰਭਾਵਤ ਕਰੇਗਾ। ਇਸ ਲਈ ਜੇਕਰ ਤੁਹਾਡੀਆਂ ਭੂਮਿਕਾਵਾਂ/ਅਧਿਕਾਰੀਆਂ ਦੀ ਕਾਰਜਕੁਸ਼ਲਤਾ ਟੁੱਟ ਗਈ ਹੈ, ਤਾਂ ਇਹ ਇੱਕ ਵੱਡਾ ਸੁਰੱਖਿਆ ਮੁੱਦਾ ਹੈ।

ਮੈਨੂੰ ਪਸੰਦ ਹੈ ਕਿ ਮੈਟ ਸਟੌਫਰ ਨੇ ਇੱਕ ਕਾਨਫਰੰਸ ਵਿੱਚ ਇਹ ਕਿਵੇਂ ਰੱਖਿਆ: "ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਉਨ੍ਹਾਂ ਚੀਜ਼ਾਂ ਦੀ ਜਾਂਚ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ ਜੋ, ਜੇ ਉਹ ਅਸਫਲ ਹੋ ਜਾਂਦੀਆਂ ਹਨ, ਤਾਂ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀ ਨੌਕਰੀ ਤੋਂ ਕੱਢ ਦਿੱਤਾ ਜਾਵੇਗਾ।" ਬੇਸ਼ੱਕ ਇਹ ਅਤਿਕਥਨੀ ਹੈ, ਪਰ ਤੁਹਾਨੂੰ ਇਹ ਵਿਚਾਰ ਮਿਲਦਾ ਹੈ: ਪਹਿਲਾਂ ਮਹੱਤਵਪੂਰਨ ਚੀਜ਼ਾਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ। ਅਤੇ ਫਿਰ ਹੋਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ, ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਸਮਾਂ ਹੈ।

PEST: PHPUnit ਦਾ ਨਵਾਂ ਬਦਲ

ਉਪਰੋਕਤ ਸਾਰੀਆਂ ਉਦਾਹਰਣਾਂ Laravel ਪ੍ਰੀ ਟੈਸਟਿੰਗ ਟੂਲ 'ਤੇ ਅਧਾਰਤ ਹਨdefiਰਾਤ: PHPUnit . ਪਰ ਸਾਲਾਂ ਦੌਰਾਨ ਹੋਰ ਟੂਲ ਈਕੋਸਿਸਟਮ ਵਿੱਚ ਪ੍ਰਗਟ ਹੋਏ ਹਨ ਅਤੇ ਇੱਕ ਨਵੀਨਤਮ ਪ੍ਰਸਿੱਧ ਹੈ PEST . ਸਰਕਾਰੀ ਲਾਰਵੇਲ ਕਰਮਚਾਰੀ ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਨੂਨੋ ਮਾਦੁਰੋ , ਦਾ ਉਦੇਸ਼ ਸੰਟੈਕਸ ਨੂੰ ਸਰਲ ਬਣਾਉਣਾ ਹੈ, ਟੈਸਟਾਂ ਲਈ ਕੋਡ ਲਿਖਣਾ ਹੋਰ ਤੇਜ਼ ਕਰਨਾ ਹੈ।

ਹੁੱਡ ਦੇ ਹੇਠਾਂ, ਇਹ ਚਲਦਾ ਹੈ su PHPUnit, ਇੱਕ ਵਾਧੂ ਪਰਤ ਦੇ ਰੂਪ ਵਿੱਚ, ਸਿਰਫ ਕੁਝ ਪੂਰਵ-ਦੁਹਰਾਏ ਗਏ ਹਿੱਸਿਆਂ ਨੂੰ ਘੱਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈdefiPHPUnit ਕੋਡ ਦੀ ਨਾਈਟ.

ਆਓ ਇੱਕ ਉਦਾਹਰਨ ਦੇਖੀਏ। ਪ੍ਰੀ ਫੀਚਰ ਟੈਸਟ ਕਲਾਸ ਨੂੰ ਯਾਦ ਰੱਖੋdefiLaravel ਵਿੱਚ nited? ਮੈਂ ਤੁਹਾਨੂੰ ਯਾਦ ਕਰਾਵਾਂਗਾ:

namespace Tests\Feature;
 
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
 
class ExampleTest extends TestCase
{
    public function test_the_application_returns_a_successful_response()
    {
        $response = $this->get('/');
 
        $response->assertStatus(200);
    }
}

ਕੀ ਤੁਸੀਂ ਜਾਣਦੇ ਹੋ ਕਿ PEST ਨਾਲ ਉਹੀ ਟੈਸਟ ਕਿਹੋ ਜਿਹਾ ਦਿਖਾਈ ਦੇਵੇਗਾ?

test('the application returns a successful response')->get('/')->assertStatus(200);

ਹਾਂ, ਕੋਡ ਦੀ ਇੱਕ ਲਾਈਨ ਅਤੇ ਬੱਸ। ਇਸ ਲਈ, PEST ਦਾ ਟੀਚਾ ਇਹਨਾਂ ਦੇ ਓਵਰਹੈੱਡ ਨੂੰ ਹਟਾਉਣਾ ਹੈ:

  • ਹਰ ਚੀਜ਼ ਲਈ ਕਲਾਸਾਂ ਅਤੇ ਢੰਗ ਬਣਾਉਣਾ;
  • ਟੈਸਟ ਕੇਸ ਐਕਸਟੈਂਸ਼ਨ;
  • ਕਾਰਵਾਈਆਂ ਨੂੰ ਵੱਖਰੀਆਂ ਲਾਈਨਾਂ 'ਤੇ ਰੱਖ ਕੇ: PEST ਵਿੱਚ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਇਕੱਠੇ ਚੇਨ ਕਰ ਸਕਦੇ ਹੋ।

Laravel ਵਿੱਚ ਇੱਕ PEST ਟੈਸਟ ਬਣਾਉਣ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਕ ਵਾਧੂ ਫਲੈਗ ਨਿਰਧਾਰਿਤ ਕਰਨ ਦੀ ਲੋੜ ਹੈ:

php artisan make:test HomepageTest --pest

ਇਸ ਲਿਖਤ ਦੇ ਅਨੁਸਾਰ, PEST Laravel ਡਿਵੈਲਪਰਾਂ ਵਿੱਚ ਕਾਫ਼ੀ ਪ੍ਰਸਿੱਧ ਹੈ, ਪਰ ਇਹ ਤੁਹਾਡੀ ਨਿੱਜੀ ਤਰਜੀਹ ਹੈ ਕਿ ਕੀ ਇਸ ਵਾਧੂ ਟੂਲ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਹੈ ਅਤੇ ਇਸਦੇ ਸੰਟੈਕਸ ਨੂੰ ਸਿੱਖਣਾ ਹੈ, ਨਾਲ ਹੀ ਇੱਕ PHPUnit ਨੋਟ ਵੀ।

BlogInnovazione.it

ਇਨੋਵੇਸ਼ਨ ਨਿਊਜ਼ਲੈਟਰ
ਨਵੀਨਤਾ ਬਾਰੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਖ਼ਬਰਾਂ ਨੂੰ ਨਾ ਭੁੱਲੋ। ਉਹਨਾਂ ਨੂੰ ਈਮੇਲ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ।

ਤਾਜ਼ਾ ਲੇਖ

ਪ੍ਰਕਾਸ਼ਕ ਅਤੇ ਓਪਨਏਆਈ ਆਰਟੀਫੀਸ਼ੀਅਲ ਇੰਟੈਲੀਜੈਂਸ ਦੁਆਰਾ ਸੰਸਾਧਿਤ ਜਾਣਕਾਰੀ ਦੇ ਪ੍ਰਵਾਹ ਨੂੰ ਨਿਯਮਤ ਕਰਨ ਲਈ ਸਮਝੌਤਿਆਂ 'ਤੇ ਹਸਤਾਖਰ ਕਰਦੇ ਹਨ

ਪਿਛਲੇ ਸੋਮਵਾਰ, ਫਾਈਨੈਂਸ਼ੀਅਲ ਟਾਈਮਜ਼ ਨੇ ਓਪਨਏਆਈ ਨਾਲ ਇੱਕ ਸੌਦੇ ਦਾ ਐਲਾਨ ਕੀਤਾ। FT ਆਪਣੀ ਵਿਸ਼ਵ ਪੱਧਰੀ ਪੱਤਰਕਾਰੀ ਨੂੰ ਲਾਇਸੰਸ ਦਿੰਦਾ ਹੈ...

30 ਅਪ੍ਰੈਲ 2024

ਔਨਲਾਈਨ ਭੁਗਤਾਨ: ਇੱਥੇ ਦੱਸਿਆ ਗਿਆ ਹੈ ਕਿ ਕਿਵੇਂ ਸਟ੍ਰੀਮਿੰਗ ਸੇਵਾਵਾਂ ਤੁਹਾਨੂੰ ਹਮੇਸ਼ਾ ਲਈ ਭੁਗਤਾਨ ਕਰਦੀਆਂ ਹਨ

ਲੱਖਾਂ ਲੋਕ ਸਟ੍ਰੀਮਿੰਗ ਸੇਵਾਵਾਂ ਲਈ ਭੁਗਤਾਨ ਕਰਦੇ ਹਨ, ਮਹੀਨਾਵਾਰ ਗਾਹਕੀ ਫੀਸ ਅਦਾ ਕਰਦੇ ਹਨ। ਇਹ ਆਮ ਰਾਏ ਹੈ ਕਿ ਤੁਸੀਂ…

29 ਅਪ੍ਰੈਲ 2024

Veeam ਵਿੱਚ ਸੁਰੱਖਿਆ ਤੋਂ ਲੈ ਕੇ ਜਵਾਬ ਅਤੇ ਰਿਕਵਰੀ ਤੱਕ, ਰੈਨਸਮਵੇਅਰ ਲਈ ਸਭ ਤੋਂ ਵੱਧ ਵਿਆਪਕ ਸਮਰਥਨ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ

Veeam ਦੁਆਰਾ Coveware ਸਾਈਬਰ ਜ਼ਬਰਦਸਤੀ ਘਟਨਾ ਪ੍ਰਤੀਕਿਰਿਆ ਸੇਵਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਨਾ ਜਾਰੀ ਰੱਖੇਗਾ। ਕੋਵਵੇਅਰ ਫੋਰੈਂਸਿਕ ਅਤੇ ਉਪਚਾਰ ਸਮਰੱਥਾਵਾਂ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰੇਗਾ...

23 ਅਪ੍ਰੈਲ 2024

ਹਰੀ ਅਤੇ ਡਿਜੀਟਲ ਕ੍ਰਾਂਤੀ: ਕਿਵੇਂ ਭਵਿੱਖਬਾਣੀ ਰੱਖ-ਰਖਾਅ ਤੇਲ ਅਤੇ ਗੈਸ ਉਦਯੋਗ ਨੂੰ ਬਦਲ ਰਿਹਾ ਹੈ

ਪੂਰਵ-ਅਨੁਮਾਨਤ ਰੱਖ-ਰਖਾਅ ਪਲਾਂਟ ਪ੍ਰਬੰਧਨ ਲਈ ਇੱਕ ਨਵੀਨਤਾਕਾਰੀ ਅਤੇ ਕਿਰਿਆਸ਼ੀਲ ਪਹੁੰਚ ਦੇ ਨਾਲ, ਤੇਲ ਅਤੇ ਗੈਸ ਸੈਕਟਰ ਵਿੱਚ ਕ੍ਰਾਂਤੀ ਲਿਆ ਰਹੀ ਹੈ।…

22 ਅਪ੍ਰੈਲ 2024

ਆਪਣੀ ਭਾਸ਼ਾ ਵਿੱਚ ਇਨੋਵੇਸ਼ਨ ਪੜ੍ਹੋ

ਇਨੋਵੇਸ਼ਨ ਨਿਊਜ਼ਲੈਟਰ
ਨਵੀਨਤਾ ਬਾਰੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਖ਼ਬਰਾਂ ਨੂੰ ਨਾ ਭੁੱਲੋ। ਉਹਨਾਂ ਨੂੰ ਈਮੇਲ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਾਈਨ ਅੱਪ ਕਰੋ।

ਸਾਡੇ ਨਾਲ ਪਾਲਣਾ