• Юнит-тесты в Laravel

    LaravelКомментариев нет

    Консольные команды

    создание тестов

    #
    // создание теста в каталоге Feature
    php artisan make:test UserTest
    
    // создание теста в каталоге Unit
    php artisan make:test UserTest --unit

    запуск тестов

    #
    // запуск тестов в linux системе
    phpunit
    
    // запуск тестов в windows
    vendor\bin\phpunit 
    // vendor/bin/phpunit
    
    // выводим в красивом виде, выполненные тесты
    vendor\bin\phpunit --testdox

     

    Примеры функции тестирования различных ситуаций в Laravel

    проверим статус ответа(тестирование роутеров)

    #
    /**
    * Route "/login"
    *
    * @return void
    */
    public function testWebRoutesLogin(): void
    {
        $response = $this->call('GET', '/login');
        $response->assertStatus(200);
    }
    #
    /**
     * Route "/account/{page}"
     *
     * @return void
     */
    public function testWebRoutesAccount(): void
    {
        $response = $this->call('GET', '/account/{page}');
        $response->assertStatus(200);
    }

    сравнение возвращаемого страницей контента

    #
    /**
    * Content compare
    *
    * @return void
    */
    public function testContentCompare(): void
    {
        $response = $this->call('GET', 'user/profile');
        $this->assertEquals('Hello World', $response->getContent());
    }
    

    проверим что бы в ответе приходил JSON в котором обязательно есть следующие элементы [‘el1’, ‘el2’, ‘el3’]

    #
    /**
    * Responce structure contains arr ['status', 'data', 'message']
    *
    * @return void
    */
    public function testApiTest()
    {
        $this->post('/test')
             ->assertJsonStructure([
                    'el1', 'el2', 'el3'
               ]);
    }

    проверка успешной авторизации пользователя через api(в ответе приходит JSON)

    #
    public function testBasicTest()
    {
        $response = $this->json(
                'POST',
                '/api/login',
                [
                    'email' => 'user@mail.ru', // верные данные
                    'password' => '123', // верные данные
        ]);
    
         $response
                ->assertStatus(200)
                ->assertJson([
                    'status' => 'success',  
                    'data' => true, // есть поле data в ответе, не важно чему равно
                    'message' => true
         ]);
    }

     

    Функции тестирования в Laravel

    Перечислим основные функции предоставляемые для тестирования в Laravel

    #
    

     

     


    Комментарии закрыты!